制作备份文件+附加日期时间+移动文件(如果文件存在)。 Python

问题描述 投票:0回答:3

我已经完成了一些工作,但我正在努力将它们组合在一起。

我想获取一个文件,将其移动到备份文件夹,从该文件获取日期时间,并将其附加到文件名/将文件名更改为文件名+日期时间。

这部分以我想要的格式获取日期时间。 (打印行是正确格式化的日期时间,但我不需要打印这一行)

    Filepath = "C:\\SyncWork\\ACE\\Files\\ESAL_P\\ESAL_P.txt"
    modifiedTime = os.path.getmtime(Filepath) 
    firstFile = os.path.getmtime(Filepath)

    print (datetime.fromtimestamp(modifiedTime).strftime("%b-%d-%y-%H:%M:%S"))

这部分将重命名/移动文件(但缺少日期时间)

    prevName = 'c:\\syncwork\\ace\\files\\ESAL_P\\ESAL_P.txt'
    newName = 'c:\\syncwork\\ace\\files\\ESAL_P\\Backup\\ESAL_P.txt'

    os.rename(prevName, newName)

如何将具有我喜欢的格式的打印行转换为字符串并将其附加到 newName 行的末尾?

我的问题得到解答后 我的最终代码如下所示:

Filepath = "C:\\SyncWork\\ACE\\Files\\ESAL_P\\ESAL_P.txt"
modifiedTime = os.path.getmtime(Filepath) 



timestamp = datetime.fromtimestamp(modifiedTime).strftime("%b-%d-%Y_%H.%M.%S")

prevName = 'c:\\SyncWork\\ACE\\Files\\ESAL_P\\ESAL_P.txt'
newName = 'c:\\SyncWork\\ACE\\Files\\ESAL_P\\Backup\\ESAL_P' 

os.rename(prevName, newName+"_"+timestamp + ".txt")
print(newName)  
python file datetime backup rename
3个回答
6
投票

我刚刚在名为“temp”的文件上测试了以下内容,该文件已更改为“temp_Sep-15-14-08:42:57”

FilePath = 'temp' # replace the temp with your file path/name
modifiedTime = os.path.getmtime(FilePath) 

timeStamp =  datetime.datetime.fromtimestamp(modifiedTime).strftime("%b-%d-%y-%H:%M:%S")
os.rename(FilePath,FilePath+"_"+timeStamp)

1
投票

这应该可以做到:

timestamp = (datetime.fromtimestamp(modifiedTime).strftime("%b-%d-%y-%H:%M:%S"))
newName = 'c:\\syncwork\\ace\\files\\ESAL_P\\Backup\\ESAL_P.txt.' + timestamp

0
投票

基于您已经必须避免重复代码并增加可用性的解决方案,我建议使用

path
库:

import os
from pathlib import Path

# create the filename as a path
filename = Path("C:\\SyncWork\\ACE\\Files\\ESAL_P\\ESAL_P.txt")

# derive the name of the backup folder from the origin and create it if necessary
target_directory = filename.parent / 'Backup'
if not target_directory.is_dir():
    print(f'Creating directory {target_directory}')
    os.mkdir(target_directory)

# this is the original part creating the timestamp
modified_time = os.path.getmtime(filename)
timestamp = datetime.fromtimestamp(modified_time).strftime("%b-%d-%Y_%H.%M.%S")

# build the target name from the original name, the timestamp and the original extension
target_file = target_directory / f'{filename.stem}_{timestamp}{filename.suffix}'
print(target_file)
os.rename(filename, target_file)

这种方法的优点是适用于任何扩展并且更安全。它看起来更长,但是如果你去掉注释,它就会变得和你的一样长:

filename = Path("C:\\SyncWork\\ACE\\Files\\ESAL_P\\ESAL_P.txt")
target_directory = filename.parent / 'Backup'

modified_time = os.path.getmtime(filename)
timestamp = datetime.fromtimestamp(modified_time).strftime("%b-%d-%Y_%H.%M.%S")

target_file = target_directory / f'{filename.stem}_{timestamp}{filename.suffix}'
print(target_file)
os.rename(filename, target_file)

希望您觉得它有用。

© www.soinside.com 2019 - 2024. All rights reserved.