Переместить и переименовать файлы с помощью Python - PullRequest
0 голосов
/ 04 октября 2019

У меня есть файлы .xls в каталоге, которые мне нужно переместить в другой каталог и переименовать. Эти файлы обновляются ежемесячно и будут иметь разные названия каждый месяц. Например, текущее имя Приложения Geocortex - Захват активов - Сеансы по типу посетителя (10_01_2018 - 10_06_2019) .csv , а в следующем месяце это будет Приложения Geocortex - Захват активов - Сессии по типу посетителя (10_01_2018- 11_06_2019) .csv Существует несколько таких файлов, каждый из которых имеет разные имена между - -, но форматирование одинаковое, см. Изображение ниже.

снимок экрана с папкой

Каждый месяц мне нужно, чтобы эти файлы перемещались в другую папку с указанным именем между - -. Например, этот должен быть переименован в 'Asset Capture.xls' .

Мой опыт работы с Python ограничен ... до сих пор я использовал Python только в продуктах ESRI, использующих Arcpy. Любая помощь, которая может быть оказана, очень ценится.

ниже это то, что я сделал. Я могу переместить переименование одного файла, но мне нужно, чтобы он перебрал все xls и переименовал с именем между - - в имени файла.

import shutil

import os

os.chdir(r'C:\Users\learly\Downloads')

renFolder= (r'C:\Users\learly\Downloads\renamed')

oldname = 'Geocortex Applications - Asset Capture - Sessions By Visitor Type 
(10_01_2018 - 10_06_2019).csv'

newname= 'renTest.csv'

shutil.move(oldname, renFolder+'/'+newname) 

Ответы [ 2 ]

1 голос
/ 04 октября 2019

Выполнение этой команды переместит все файлы в вашей первой папке во вторую и переименует их:

import os

ORIGINAL_FOLDER = "/path/to/your/original/folder/here/"
NEW_FOLDER = "/path/to/your/new/folder/here/"
for path in os.listdir(ORIGINAL_FOLDER): # all files in the folder
    if not path.endswith(".csv"):
         continue
    name = path.split("-")[1] # just the part we want
    # move the file to the new folder, and rename it
    os.rename(ORIGINAL_FOLDER + path,  NEW_FOLDER + name + ".xls")

Вы можете запускать это каждый месяц или настроить какой-либо автоматический способ сделать это, например,cronjob.

0 голосов
/ 07 октября 2019
import os
import re
import shutil

 for filename in os.listdir(ORIGINAL_FOLDER): # all files in the folder
    match = re.search(r"^Geocortex Applications - (.*)[(].*$", filename)
    shutil.move(f'{ORIGINAL_FOLDER}\\{filename}',  f'{NEW_FOLDER}\{match.group(1)}.xls')
...