Как удалить первые 6 символов всех файлов в папке, которые начинаются с определенных критериев (например, XXX_job name.txt)? - PullRequest
0 голосов
/ 16 июня 2020

****** ОБНОВЛЕНИЕ *******

Итак, вот мой код, который я написал до сих пор:

import os
import glob
import re
#from pathlib import Path
import sys

print("Welcome!")
path = r"D:\aerial_mbu\ForeFlight\ForeFlight Content Packs\OGLMissionsContentPack\layers"


files = os.listdir(path)
for name in files:
    if name.startswith("1"):
        new_name = name.replace(name[:6], "")
        print(new_name)
        os.rename(name, new_name)

К сожалению, он не переименовывает файлы , вместо этого я продолжаю получать ошибку, показанную ниже: введите здесь описание изображения

Похоже, что-то не так с моим вызовом os.rename, потому что он печатает правильное имя (new_name)

****** ORIGINAL POST ******* Ищу способ переименовать некоторые файлы в папке. Некоторые имена файлов начинаются с 6 дополнительных чисел, а некоторые нет. Я хотел бы go просмотреть всю папку и удалить 6 дополнительных номеров из файлов, в которых они есть.

Текущая папка ex:

1111_job_name1.txt
1112_job_name2.txt
1113_job_name3.txt
job_name4.txt
1115_job_name5.txt
job_name6.txt

Желаемая папка ex:

job_name1.txt
job_name2.txt
job_name3.txt
job_name4.txt
job_name5.txt
job_name6.txt

Первоначально я пытался вызвать переименование в командной строке, но не смог работа по условности.

Ответы [ 2 ]

0 голосов
/ 16 июня 2020

Вы можете использовать re для сопоставления, если строка содержит цифры как 6 символов, и если это не так, она оценивается как NULL, а операторы внутри, если не выполняются. Это соответствует только с start, поскольку мы используем "^"

re.findall(r"^\d{6}",files). #here 6 denotes the number of digits it starts with

Затем, позже, с помощью

re.sub(r"^\d{6}","",files)

Вы можете заменить эти совпадающие символы на "" -> на пустую строку. Там, удалив. Итак, ваш код выглядит следующим образом:

import os
import re
for files in os.listdir():
    if(re.findall(r"^\d{6}",files)):
        os.rename(files,re.sub(r"^\d{6}","",files))

Я вижу, что есть "_", если вы тоже хотите удалить его, вы можете использовать этот r"^\d{6}\_" в качестве выражения re. Если вы не хотите вводить количество цифр заранее и хотите удалить файлы, которые начинаются с любого количества цифр, используйте это r"^[0-9]+\_"

0 голосов
/ 16 июня 2020

вот сценарий, который я создал на основе этой статьи

# importing os module 
import os 

# Function to rename multiple files  def main(): 

    for  filename in enumerate(os.listdir("src/")): #src is the directory 
        dst =filename[5:]
        src = 'src/'+filename 
        dst = 'src/'+dst 

        # rename() function will 
        # rename all the files 
        os.rename(src, dst)    
# Driver Code  if __name__ == '__main__': 

    # Calling main() function 
    main()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...