import os
fileHandle = open('booksNames.txt', 'r+')
def getData():
data = os.system('dir /b /a /s *.pdf *.epub *.mobi')
fileHandle.writelines(str(data))
fileHandle.close()
我试图将os.system函数返回的数据写入文件。但是,文件中唯一写入的内容是0.以下是我尝试过的其他一些变体。
import os
fileHandle = open('booksNames.txt', 'r+')
getData = lambda:os.system('dir /b /a /s *.pdf *.epub *.mobi')
data = getData()
fileHandle.writelines(str(data))
fileHandle.close()
在输出窗口中,它提供了完美的输出,但在写入文本文件时写入零。我也试过使用返回但没有用。请帮助。
答案 0 :(得分:3)
使用subprocess模块。有许多方法,但最简单的是:
>>> import subprocess
>>> with open('out.txt','w') as f:
... subprocess.call(['dir','/b','/a','/s','*.pdf','*.epub','*.mobi'],stdout=f,stderr=f,shell=True)
...
0
零是退出代码,但内容将在out.txt
。
答案 1 :(得分:1)
对于Windows(我假设您使用的是Windows,因为您使用的是' dir'命令,而不是Unix / Linux' ls'):
只需让命令完成工作。
os.system('dir /b /a /s *.pdf *.epub *.mobi >> booksNames.txt')
使用'>>'将附加到任何现有文件。只需使用'>'写一个新文件。
我喜欢使用子进程的其他解决方案,但由于这是特定于操作系统的,我认为这更简单。