0

私は初心者プログラマーです。

私の Py スクリプトでは、サブ ディレクトリ内の複数のファイルからの情報を含む CSV ファイルを作成する必要があります。コードを実行すると、エラーが発生しました: FileNotFoundError: [Errno 2] No such file or directory: '1'. ディレクトリの内容を印刷したところ、ディレクトリがファイルの実際の名前を読み取らず、数字または文字に置き換えていることがわかりました。

質問: これはディレクトリの典型ですか? 研究では、他の人が使用できるように見えたので

for file in directory:
    open(file, "r")

正しく。何か不足していますか?

私のコード:

sub_dir = datetime + "-dir"
os.mkdir(sub_dir)

with open("csv.txt", "a") as csv, open("data.txt") as data:
    csv.write("Title" + "\r")
    for x in data:
        csv.write("," + x)
    csv.write("\r" + "Data")                
    for file in sub_dir:
        csv.write(file)
        csv.write(", " + "Word1")
        csv.write(", " + "Word2")
        csv.write(", " + "Word3")
        csv.write(", " + "Word4")
        csv.write("\r")
        f = open(file, "r")
        lines = f.readlines()
        for line in lines:
            line.replace("word5=", ", ")
            line.replace("word6=", ", ")
            line.replace("word7=", ", ")
            csv.write(line)

質問file:実際のファイル名になるようにコードを変更するにはどうすればよいですか?

4

2 に答える 2

8

問題は次の行です。

for file in sub_dir:

print(file)毎回ループを実行すると、何が問題なのかが明らかになるはずsubdirです。これは文字列であるため、その文字列の文字を 1 つずつ繰り返し処理しているだけです。

おそらくここで必要なのは次のとおりです。

for file in os.listdir(sub_dir):

ドキュメントで説明されているように、次のようになりlistdirます。

パスで指定されたディレクトリ内のエントリの名前を含むリストを返します。リストは任意の順序です。特別なエントリ「.」は含まれません。および「..」は、ディレクトリに存在する場合でも。

于 2013-08-22T19:53:56.930 に答える
3

sub_dirディレクトリではありません。ディレクトリの名前です。

for file in sub_dir:

名前の文字を反復処理します。

于 2013-08-22T19:54:09.803 に答える