我想在每次运行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
您报告的错误是由文件夹名称中的:
引起的。用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位数年份的正确方法