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

首先将日期时间转换为文件夹名称可以使用的东西,这样可以工作 mydate_str = datetime.datetime.now().strftime("%m-%d-%Y")

然后根据需要创建文件夹 - 查看 通过 Python Johnf创建文件和目录

于 2013-08-22T19:24:13.603 回答