在Python中生成新的.txt文件

在Python中生成新的.txt文件,python,python-2.6,Python,Python 2.6,我想在每次运行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')

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

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

让我们看看发生了什么:
使用
datetime.datetime.now()
我们询问
now
的时间,因此当前时间
使用
.strftime(“%Y-%m-%d%H.%m.%S”)
我们按照前面的步骤从
datetime
模块中格式化时间:
%Y
表示4位数的年份,然后我们需要一个
-
,然后是两位数的月份
%m
,然后是
-/code>,两位数的天
%d
,空格
,24小时
%H
,点
,两位数分钟
%M
,点
,两位数秒
%s

您可以使用以下选项打印当前日期时间:

print(datetime.datetime.now().strftime("%Y-%m-%d %H.%M.%S"))
使用
+'\u abc.txt'
我们在日期时间添加
'\u abc.txt'
文本。
您可以使用以下选项打印全文:

print(datetime.datetime.now().strftime("%Y-%m-%d %H.%M.%S") + '_abc.txt')
打开('my_file.txt','w+')
时,我们要求操作系统创建一个名为
my_file.txt
的文件
w+
打开一个文件进行写入和读取。如果文件存在,则覆盖现有文件。如果该文件不存在,则创建一个新文件进行读写。

您在文件
'int'+i+'\n mode\n'
中为每个i-in-up\u-int写入

如果我们想要创建一个具有不同名称的文件,我们可以修改
(datetime.datetime.now().strftime(“%Y-%m-%d%H.%m.%S”)+“\u 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位数年份的正确方式

当然可以,您尝试过了吗?快速而肮脏的版本将只
打开(日期+“\u abc.txt”)
,其中
date
是一个字符串形式的日期/时间。我相信您能够找到如何获取该日期/时间。可能重复@JorgeLavín该问题似乎围绕使用
日志记录
模块来解决。@timgeb是的,但是提供的答案回答如下所示well@JorgeLav我同意,我不太愿意把OP指向th通过goldhammer提出问题,因为这可能会让人不知所措。我们可以不生成“_abc.txt”,而是通过用户输入提示按我们选择的名称保存文件吗?知道怎么做吗?它要求我“写文件名:”当我输入“Jinni”时,会抛出错误“名称‘Jinni’未定义”我没有注意到您正在将python 2.6.sobstitute
input()
raw\u input()
一起使用。请参阅更新的答案。请注意,在更新的问题中,您没有关闭文件。您总是希望在结尾关闭文件。或者您使用
与open('file\u name.txt',w+')一起使用作为自己处理关闭操作的fp
,或者如果使用
fp=open('file_name.txt','w+')
,最后必须调用
fp.close()
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+')
...
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')