2013-10-19 44 views
0

我有一個CSV文件的目錄,我想導入到MySQL中。大約有100個文件,並且手動導入是很痛苦的。Python - 在目錄中的每個文件上執行命令行功能?

我的命令行是這樣的:

mysqlimport -u root -ppassword --local --fields-terminated-by="|" data PUBACC_FR.dat 

的文件是所有XX.dat類型,即AC.datCP.dat等我實際上第一之前處理它們(通過rename 's/^/PUBACC_/' *.dat)重命名它們。理想情況下,我希望能夠在一個腳本中完成這兩項任務:重命名這些文件,然後運行該命令。

從我所發現的閱讀,是這樣的:

for filename in os.listdir("."): 
    if filename.endswith("dat"): 
     os.rename(filename, filename[7:]) 

誰能幫助我開始使用一個腳本,將做到這一點,好嗎?讀取文件名,重命名它們,然後爲每個文件運行mysqlimport命令?

謝謝!

+0

可能的重複[在Python中調用外部命令](http://stackoverflow.com/questions/89228/calling-an-external-command-in-python) –

+1

我不會做同樣的任務腳本。 –

+0

爲什麼你想在Python中做到這一點?你可以簡單地運行'ls * dat | xargs -n 1 mysqlimport -u root -ppassword --local --fields-terminated-by =「|」數據'在你的shell中。 – damienfrancois

回答

1

我想類似下面的Python代碼可用於:

import subprocess 
import os 


if __name__ == "__main__": 
    for f in os.listdir("."): 
     if (f.endswith(".dat")): 
      subprocess.call("echo %s" % f, shell=True) 

很顯然,你應該從呼應你的命令而不是更改命令。

有關使用子進程的更多詳細信息,請參閱http://docs.python.org/2/library/subprocess.html或查看可能的重複。

相關問題