-1

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

2 回答 2

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 个用户用户 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 Jun 18 13:11 375585_782393371042_1430263587_n.jpg\n

将返回的单个字符串check_output转换为文件名列表留给读者作为练习。

于 2013-07-11T13:21:01.380 回答
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))
于 2013-07-11T13:27:55.113 回答