Python复制文件但保留原始文件。

6 浏览
0 Comments

Python复制文件但保留原始文件。

这个问题已经有了答案

如何复制文件

Python 问题。

我想要复制一个名为 randomfile.dat 的文件,并在复制文件的末尾添加时间戳。

然而,我也想保留原始文件。因此,在我的当前目录中(不移动文件)我将会得到:

randomfile.dat

randomfile.dat.201711241923(或者时间戳格式是什么...)

有人能提供建议吗?我的任何尝试都导致我丢失原始文件。

admin 更改状态以发布 2023年5月20日
0
0 Comments

这样怎么样?

$ ls
$ touch randomfile.dat
$ ls
randomfile.dat
$ python
[...]
>>> import time
>>> src_filename = 'randomfile.dat'
>>> dst_filename = src_filename + time.strftime('.%Y%m%d%H%M')
>>> import shutil
>>> shutil.copy(src_filename, dst_filename)
'randomfile.dat.201711241929'
>>> [Ctrl+D]
$ ls
randomfile.dat
randomfile.dat.201711241929

0
0 Comments

当你打开文件时,你可以指定以"r""w""a"的方式打开它。"a"将追加到文件中(r - 读,w - 写)。

所以:

with open("randomfile.dat", "a") as file:
    file.write("some timestamp")

或者,如果你想保留这个原始文件并复制一份,那么你需要打开这个文件,复制它,然后打开一个新文件并向新文件写入。

# empty list to store contents from reading file
file_contents = []
# open file you wish to read
with open('randomfile.dat', 'r') as file:
    for line in file:
        file_contents.append(line)
# open new file to be written to
with open('newfile.txt', 'w') as newfile:
    for element in file_contents:
        newfile.write(element)
    newfile.write("some timestamp")

任何换行符(\n)将由读取器保留,并且它基本上按行读取文件。然后,逐行向一个新文件写入。循环结束后,添加时间戳,以便它写入文件的底部。


编辑:刚意识到OP希望做一些略微不同的事情。这仍然可以工作,但你需要打开附加时间戳的新文件:

import datetime
datestring = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')
with open('newfile' + datestring + '.txt', 'w') as newfile:
    for element in file_contents:
    newfile.write(element)


但如其他人所提到的,你可能更好地使用一个模块来完成这个任务。

0