【问题标题】:Python - Execute command line function on every file in a directory?Python - 对目录中的每个文件执行命令行功能?
【发布时间】:2013-10-28 08:06:01
【问题描述】:

我有一个要导入 MySQL 的 CSV 文件目录。大约有 100 个文件,手动导入很痛苦。

我的命令行是这样的:

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

这些文件都是XX.dat类型,即AC.dat、CP.dat等。实际上我在处理它们之前先重命名它们(通过rename 's/^/PUBACC_/' *.dat)。理想情况下,我希望能够在一个脚本中完成这两项任务:重命名文件,然后运行命令。

根据我发现的阅读内容,是这样的:

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

任何人都可以帮助我开始使用可以完成此任务的脚本吗?读取文件名,重命名它们,然后为每个文件运行mysqlimport 命令?

谢谢!

【问题讨论】:

  • 我不会在同一个脚本中完成这两项任务。
  • 你为什么要在 Python 中这样做?您可以在 shell 中简单地运行 ls *dat|xargs -n 1 mysqlimport -u root -ppassword --local --fields-terminated-by="|" data。

标签: python mysql command-line subprocess rename


【解决方案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)

显然,您应该将命令从 echo 更改为您的命令。

有关使用子进程的更多详细信息,请参阅http://docs.python.org/2/library/subprocess.html,或查看可能的重复项。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-11-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-18
    相关资源
    最近更新 更多