4

私の Python スクリプトでは、ディレクトリを変更せずにサブディレクトリに新しいファイルを作成する必要があり、現在のディレクトリからそのファイルを継続的に編集する必要があります。

私のコード:

os.mkdir(datetime+"-dst")

for ip in open("list.txt"):
    with open(ip.strip()+".txt", "a") as ip_file: #this file needs to be created in the new directory
        for line in open("data.txt"):
            new_line = line.split(" ")
            if "blocked" in new_line:
                if "src="+ip.strip() in new_line:
                    #write columns to new text file
                    ip_file.write(", " + new_line[11])
                    ip_file.write(", " + new_line[12])
                    try:
                        ip_file.write(", " + new_line[14] + "\n")
                    except IndexError:
                        pass

問題:

スクリプトを実行するサーバーによっては、ディレクトリとファイルのパスが常に同じであるとは限りません。ディレクトリ名の一部は、それが作成された日時になります。つまりtime.strftime("%y%m%d%H%M%S") + "word"、時間が常に変化している場合、そのディレクトリを呼び出す方法がわかりません。作成後にファイルを移動するために使用できると思っshutil.move()たのですが、日時スタンプが問題になるようです。

私は初心者のプログラマーであり、正直なところ、これらの問題にどのように対処すればよいかわかりません。ディレクトリとファイルに変数を割り当てることを考えていましたが、日時がつまずいています。

質問: ファイルとサブ ディレクトリの名前/パスが常に同じではない場合、サブ ディレクトリ内にファイルを作成するにはどうすればよいですか?

4

2 に答える 2

14

作成したディレクトリを変数に格納します。os.mkdirその名前のディレクトリが存在する場合にスローします。os.path.joinパス コンポーネントを結合するために使用します (または を使用するかどうかを認識します/) \

import os.path

subdirectory = datetime + "-dst"
try:
    os.mkdir(subdirectory)
except Exception:
    pass

for ip in open("list.txt"):
    with open(os.path.join(subdirectory, ip.strip() + ".txt"), "a") as ip_file:
        ...
于 2013-08-22T18:45:02.740 に答える
0

最初に日時を、フォルダー名で使用できるものに変換します

次に、必要に応じてフォルダーを作成します - Python Johnfを介してファイルとディレクトリを作成するを確認してください

于 2013-08-22T19:24:13.603 に答える