我希望每次运行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
答案 0 :(得分: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
模块的时间格式化为:%Y
表示4位数字的年份,然后我们想要-
,然后是两位数字的月份{{1 }},然后是%m
,两位数字的天-
,空格%d
,24小时制的小时数,点号
%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+
您在up_int中为每个i写入文件for i in up_int:
fp.write('int ' + i + '\n mode \n')
fp.close()
。
如果要创建其他名称的文件,可以修改'int ' + i + '\n mode \n'
行。例如,如果我们想要一个文件,其中包含:当前日期,下划线,用户输入,.txt ,我们可以编写:
(datetime.datetime.now().strftime("%Y-%m-%d %H.%M.%S") + '_abc.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
,这是显示4位数年份的正确方法