【问题标题】: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)重命名文件并移动到目标文件夹感到困惑。

【问题讨论】:

  • 您需要创建一个带有您要分配的名称的字符串。添加 print() 命令以检查名称是否符合您的要求。然后你有docs.python.org/3/library/os.html,你有方法来创建文件夹或重命名文件

标签: python csv file rename python-datetime


【解决方案1】:

使用来自os modulerename 方法。

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

以下是来自pageschedule 的一些示例:

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)

【讨论】:

  • schedule 模块真的很有帮助
  • 谢谢。调度是个好主意。它将增强脚本。我会添加它
【解决方案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')

【讨论】:

  • 谢谢!它也很有效。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-04-20
  • 2011-03-20
  • 1970-01-01
  • 2015-05-11
  • 2016-05-07
  • 2014-12-27
相关资源
最近更新 更多