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