新的.txt文件在Python中生成

问题描述 投票:0回答:1

我想在每次运行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

我可以添加日期/时间戳吗?

错误:

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
python python-2.6
1个回答
1
投票

您报告的错误是由文件夹名称中的:引起的。用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,空间,24小时格式%H,点.,2位数分钟%M,dot .,两位数秒%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')

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.