2013-10-19 39 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或查看可能的重复。

相关问题