-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 ユーザー user 0 Jun 3 22:04 122.txt\n-rw-rw-r-- 1 ユーザー user 0 Jun 3 22:04 154.txt\nr-- ------ 1 ユーザー ユーザー 8666 3 月 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ファイル名のリストに変換する方法は、読者の課題として残されています。

于 2013-07-11T13:21:01.380 に答える
1

If you are using Python, you might as well do it the Python way:

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 に答える