Python中新的.txt文件生成

时间:2018-09-10 11:51:32

标签: 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')
    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

1 个答案:

答案 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位数年份的正确方法