【问题标题】:writing command line output to file将命令行输出写入文件
【发布时间】:2012-02-18 16:26:10
【问题描述】:

我正在编写一个脚本来清理我的桌面,根据文件类型移动文件。第一步似乎是ls -1 /Users/user/Desktop(我在Mac OSX 上)。那么,使用 Python,我将如何运行命令,然后将输出写入特定目录中的文件?由于这将是无证的,而且我将是唯一的用户,我不介意(更喜欢?)如果它使用 os.system()

【问题讨论】:

  • 您要移动哪些文件?看看docs.python.org/library/shutil.html 使用 Python 进行文件操作。
  • Shell 脚本就足够了
  • 如果您使用 shell 脚本,请阅读有关管道和重定向的更多信息。
  • 我不是在谈论创建一个单独的 .sh 文件。 foriffile 的组合就足够了。
  • 如果您不创建 shell 脚本,则不应使用 ls。事实上,即使您正在创建一个 shell 脚本,您也应该为此使用 find

标签: python macos file unix ls


【解决方案1】:

要打开文件,您可以使用f = open(/Path/To/File) 命令。语法是f = open('/Path/To/File', 'type'),其中'type' 是r 表示读取,w 表示写入,a 表示追加。执行此操作的命令是 f.read()f.write('content_to_write')。要从命令行命令获取输出,您必须使用 popen 和 subprocess 而不是 os.system()。 os.system() 不返回值。您可以在 popen here 上阅读更多内容。

【讨论】:

    【解决方案2】:

    在浏览 python 文档以运行 shell 命令并获得输出后,您可以使用 subprocess 模块和 check_output 方法。

    之后,您可以使用标准 Python IO 函数将该输出简单地写入文件:File IO in python

    【讨论】:

      【解决方案3】:

      您可以在命令中使用> 将标准输出重定向到任何文件。

      $ ls /Users/user/Desktop > out.txt
      

      使用python,

      os.system('ls /Users/user/Desktop > out.txt')
      

      但是,如果您使用的是 python,那么您可以使用os.listdir 来列出目录中的所有文件,而不是使用ls 命令。

      path = '/Users/user/Desktop'
      files = os.listdir(path)
      print files
      

      【讨论】:

      • ImportError: No module named system.
      • @Suda.nese 如何尝试导入?你的 Python 版本是多少?
      猜你喜欢
      • 1970-01-01
      • 2015-06-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-17
      • 2023-03-11
      • 1970-01-01
      相关资源
      最近更新 更多