以下是我尝试的代码,我是python的新手,有人可以让我知道我该怎么办
#opening a 'Newfile' to write in
file_list=open('file_list.txt','w')
#taking the list of file which i have to write in file
list_files = os.system("ls -1 /amxusers7/inf/aimsys/netabp6/ALL_SCRIPTS/VOICE")
#trying to write in a Newfile
file_list.writelines(list_files)
我收到错误:
Traceback (most recent call last):
File "testPuneet.py", line 30, in ?
file_list.writelines(list_files)
TypeError: writelines() requires an iterable argument
答案 0 :(得分:1)
在Unix上,os.system
返回您调用的进程的退出代码。因此,os.system("ls")
将为您提供整数,而不是文件列表。
相反,请使用subprocess
模块。 check_output
方法将为您提供打印到屏幕上的值。
import subprocess
result_of_ls = subprocess.check_output(["ls", "-l", "/amxusers7/inf/aimsys/netabp6/ALL_SCRIPTS/VOICE"])
作为一个例子给出:
总计75032 \ n-rw-rw-r-- 1位用户0 Jun 3 22:04 122.txt \ n-rw-rw-r-- 1位用户0 Jun 3 22:04 154.txt \ nr -------- 1位用户user 8666 Mar 29 22:11 2731_74814450810_2074865_n.jpg \ n-rw-rw-r-- 1位用户111872 5月30日21:40 3065397482_cd8b581c9a.jpg \ n-rw-rw- r-- 1位用户24661 6月18日13:11 375585_782393371042_1430263587_n.jpg \ n
将check_output
返回的单个字符串转换为文件名列表留给读者。
答案 1 :(得分:1)
如果您使用的是Python,那么您也可以使用Python方式:
import os
with open('file_list.txt','w') as file_list:
list_files = os.listdir('/amxusers7/inf/aimsys/netabp6/ALL_SCRIPTS/VOICE')
file_list.write('\n'.join(list_files))