Python 中生成新的 .txt 文件
New .txt file Generation in Python
我想在每次 运行 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
我可以添加一个 date/timestamp 吗?
错误:
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
, space </code>, 24 小时格式小时 <code>%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+
打开文件进行写入和读取。如果文件存在,则覆盖现有文件。如果文件不存在,则新建一个文件进行读写。
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')
在任何情况下自动处理关闭程序。
对于你的第二个问题,你实际上每次都在创建一个新文件。请记住,由于文件名随时间变化,如果您每秒创建超过 1 个文件,则每个文件都会覆盖前一个文件。
作为旁注,请注意我已将 20%y
更改为 %Y
,这是显示 4 位数年份的正确方法
我想在每次 运行 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
我可以添加一个 date/timestamp 吗?
错误:
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
, space </code>, 24 小时格式小时 <code>%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+
打开文件进行写入和读取。如果文件存在,则覆盖现有文件。如果文件不存在,则新建一个文件进行读写。
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')
在任何情况下自动处理关闭程序。
对于你的第二个问题,你实际上每次都在创建一个新文件。请记住,由于文件名随时间变化,如果您每秒创建超过 1 个文件,则每个文件都会覆盖前一个文件。
作为旁注,请注意我已将 20%y
更改为 %Y
,这是显示 4 位数年份的正确方法