Python列出目录中的所有文件,并将其写入python中的文件中

时间:2013-07-11 13:14:22

标签: python

以下是我尝试的代码,我是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

2 个答案:

答案 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))