将命令行输出写入文件

8

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


你想要移动哪些文件?请查看http://docs.python.org/library/shutil.html,了解使用Python进行文件操作的相关信息。 - user647772
Shell脚本就足够了。 - Shiplu Mokaddim
1
如果你使用shell脚本,请进一步了解管道和重定向。 - Some programmer dude
жҲ‘дёҚжҳҜеңЁиҜҙиҰҒеҲӣе»әдёҖдёӘеҚ•зӢ¬зҡ„.shж–Ү件гҖӮдҪҝз”ЁforпјҢifе’Ңfileзҡ„з»„еҗҲе°ұи¶іеӨҹдәҶгҖӮ - Shiplu Mokaddim
2
如果你不是在创建一个shell脚本,那么你就不应该使用ls命令。实际上,即使你正在创建一个shell脚本,你也应该使用find命令来代替。 - sorpigal
3个回答

23

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

$ 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

导入错误:找不到名为system的模块。 - McLan
@Suda.nese 你是如何尝试导入的?你的Python版本是多少? - taskinoor

3

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

之后,您可以使用标准的Python IO函数将输出写入文件:Python中的文件IO


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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接