【问题标题】:Renaming csv file with a variable name and moving to destination folder用变量名重命名 csv 文件并移动到目标文件夹
【发布时间】:2022-01-25 00:12:46
【问题描述】:
我在下载文件夹中有一个名为 export.csv 的 csv 文件。
我需要以“REMSIMPORT + 今天的日期”格式重命名文件并移动到目标文件夹。
例如今天的日期是 2022-01-24。所以export.csv 将被重命名为REMSIMPORT20220124。
明天它将是REMSIMPORT20220125。
所以它会根据当前日期每次改变
这就是我达到的程度。
from datetime import date
src_path = r'C:/Users/abc/Downloads/'
dest_path = r"C:\Users\abc\Desktop\Weekly"
today_date = date.today() # Extracted today's date
today_date = str(today_date).replace("-","")
我对如何使用变量newname(例如REMSIMPORT20220124)重命名文件并移动到目标文件夹感到困惑。
【问题讨论】:
标签:
python
csv
file
rename
python-datetime
【解决方案1】:
使用来自os module 的rename 方法。
import os
src_path = r'C:/Users/abc/Downloads/' + 'REMSIMPORT'
dest_path = r'C:/Users/abc/Desktop/Weekly/' + 'REMSIMPORT' + today_date
os.rename(src_path, dest_path)
【解决方案2】:
您可以将schedule 用于您的目的。
$ pip install schedule
以下是来自page 的schedule 的一些示例:
import schedule
import time
def job():
print("I'm working...")
schedule.every(10).seconds.do(job)
schedule.every(10).minutes.do(job)
schedule.every().hour.do(job)
schedule.every().day.at("10:30").do(job)
schedule.every(5).to(10).minutes.do(job)
schedule.every().monday.do(job)
schedule.every().wednesday.at("13:15").do(job)
schedule.every().minute.at(":17").do(job)
while True:
schedule.run_pending()
time.sleep(1)
根据你的目的,你可以尝试这样的事情:
from datetime import date
import pandas as pd
import schedule
import time
def save_csv():
today_date = str(date.today()).replace("-","")
src_path = r'C:/Users/abc/Downloads/'
dest_path = r'C:\Users\abc\Desktop\Weekly'
df = pd.read_csv(src_path + 'export.csv')
df.to_csv(dest_path + 'REMSIMPORT' + today_date + '.csv')
schedule.every().day.at("10:30").do(save_csv)
while True:
schedule.run_pending()
time.sleep(1)
【解决方案3】:
Shutil copyfile 应该不错!
from datetime import date
from shutil import copyfile
src_path = r'C:/Users/user/adifferentdir'
dest_path = r"C:/Users/user/dir"
today_date = date.today() # Extracted today's date
today_date = str(today_date).replace("-","")
copyfile(src_path+"/export.csv",dest_path+"/REMSIMPORT"+today_date+".csv")#copying file with new name```
【解决方案4】:
我认为使用shutil.move() 实用函数是最好的选择,因为它不仅可以移动文件,还可以同时重命名它们。我还发现,使用pathlib 模块可以使文件和目录路径操作不仅极其简单而且非常直观(并且允许以操作系统可移植的方式进行操作)。
无论如何,这里有一个使用它们来完成你想做的事情的例子。
from datetime import date
from pathlib import Path
from shutil import move
filename = 'export.csv'
#src_dir = Path('C:/Users/abc/Downloads/')
#dst_dir = Path('C:/Users/abc/Desktop/Weekly')
# Directories for testing.
src_dir = Path('./').resolve()
dst_dir = Path('./Weekly').resolve()
prefix = 'REMSIMPORT'
today_date = date.today() # Extracted today's date
today_date = str(today_date).replace('-', '')
newname = prefix + today_date
if not dst_dir.exists():
dst_dir.mkdir() # Create destination directory since it doesn't exist.
src_path = src_dir / filename
dst_path = dst_dir / (newname + src_path.suffix)
move(src_path, dst_path)
print('fini')