Python 中生成新的 .txt 文件

New .txt file Generation in Python

我想在每次 运行 python 脚本时创建一个新的 .txt 文件。知道怎么做。 我当前的代码:

import datetime
def write_up_commands(up_int):
    fp = open(datetime.datetime.now().strftime("20%y-%m-%d %H:%M:%S") + '_abc.txt', 'w+')
    for i in up_int:
        fp.write('int ' + i + '\n mode \n')
    fp.close()

类似

1_abc
2_abc
3_abc

我可以添加一个 date/timestamp 吗?

错误:

IOError: [Errno 22] invalid mode ('w+') or filename: '2018-09-10 18:02:40_abc.txt'

用户输入:

def write_up_commands(up_int):
    user_text = input("write the name of the file: ")
    fp = open(datetime.datetime.now().strftime("%Y-%m-%d %H.%M.%S") + user_text + '.txt', 'w+')
    #with open(datetime.datetime.now().strftime("%Y-%m-%d %H.%M.%S") + user_text + '.txt', 'w+') as fp:
    for i in up_int:           
            fp.write('int ' + i + '\n mode \n')

NameError: name 'jinni' is not defined

您报告的错误是由文件夹名称中的 : 引起的。将其替换为 valid character:

import datetime
def write_up_commands(up_int):
    fp = open(datetime.datetime.now().strftime("%Y-%m-%d %H.%M.%S") + '_abc.txt', 'w+')
    for i in up_int:
        fp.write('int ' + i + '\n mode \n')
    fp.close()

让我们看看发生了什么:
使用 datetime.datetime.now() 我们询问 now 的时间,所以当前时间
使用 .strftime("%Y-%m-%d %H.%M.%S") 我们从 datetime 模块中格式化时间,因为我们 prefea: %Y 表示 4 位数年份,然后我们想要 -,然后是两位数月份 %m, 然后 -, 两位数天 %d, space </code>, 24 小时格式小时 <code>%H, 点 . , 2 位数分钟 %M, 点 ., 两位数秒 %s.
您可以打印当前日期时间:

print(datetime.datetime.now().strftime("%Y-%m-%d %H.%M.%S"))

+ '_abc.txt' 我们在日期时间添加 '_abc.txt' 文本。
您可以打印全文:

print(datetime.datetime.now().strftime("%Y-%m-%d %H.%M.%S") + '_abc.txt')

open('my_file.txt', 'w+') 我们要求我们的操作系统创建一个名称为 my_file.txt 的文件。 w+ 打开文件进行写入和读取。如果文件存在,则覆盖现有文件。如果文件不存在,则新建一个文件进行读写。

for i in up_int:
    fp.write('int ' + i + '\n mode \n')
fp.close()

你为 up_int 中的每个 i 在你的文件中写入 'int ' + i + '\n mode \n'

如果我们想创建一个不同名称的文件,我们可以修改(datetime.datetime.now().strftime("%Y-%m-%d %H.%M.%S") + '_abc.txt'行。例如,如果我们想要一个包含以下内容的文件:当前日期、下划线、用户输入、.txt 我们可以这样写:

user_text = raw_input("write the name of the file: ")
fp = open(datetime.datetime.now().strftime("%Y-%m-%d %H.%M.%S") + user_text + '.txt', 'w+')
...

即使没有被问到,我也想指出 fp.close() 是关闭文件的那一行。像这样处理这个方法是危险的,因为如果你忘记关闭文件或者在文件关闭之前发生了什么事情,你将留下所有打开的文件。我建议您更改所有代码:

with open(datetime.datetime.now().strftime("%Y-%m-%d %H.%M.%S") + user_text + '.txt', 'w+') as fp:
    for i in up_int:
    fp.write('int ' + i + '\n mode \n')

在任何情况下自动处理关闭程序。

对于你的第二个问题,你实际上每次都在创建一个新文件。请记住,由于文件名随时间变化,如果您每秒创建超过 1 个文件,则每个文件都会覆盖前一个文件。

作为旁注,请注意我已将 20%y 更改为 %Y,这是显示 4 位数年份的正确方法