У меня есть сценарий Python, который считывает имена файлов из oldFiles.txt, перебирает имена файлов, которые являются файлами в каталоге Linux, затем обновляет имена файлов с помощью string.replace и, наконец, запускает подпроцесс, чтобы найти эти файлы (скажем, в домашнем каталоге, чтобы упростить объяснение и демонстрацию) и измените их имена, используя
subprocess.run(['mv', 'oldfile', 'newfile')]
. Предположим, у меня есть имена файлов со строкой «jane», и я хочу заменить ее на «jdoe», пример имени файла будет: abcd_jane.csv
sys.argv [1] - это аргумент, который будет передан следующим образом
./changeJane.py oldFiles.txt
Я использую эти пустые файлы для локальных обучение, их имена сохраняются в oldFiles.txt
sdafsdfs_jane.doc 12fgdf-jane.csv files_jane.txt
Итерация и обновление имен файлов в oldFiles.txt - это нормально, или, может быть, также есть некоторые ошибки :-( но я все еще не мог Не понимаю, как запустить подпроцесс для достижения моей цели, как описано выше. Это то, что я пришел, большое спасибо. Извините за мое плохое объяснение.
PS: Я вынужден использовать модули sys и subprocess, а также принудительно применять все упомянутые детали, это оценка домашнего задания.
#!/usr/bin/env python3
import sys
import subprocess
with open(sys.argv[1], 'r+') as f:
for line in f.readlines():
newline = line.strip()
newtext = newline.replace("jane", "jdoe")
subprocess.run(['mv', '~/newline', '~/newtext']) #I know its wrong but this is my limit!
UPDATE
Я изменил скрипт на вернуть список и удобно перебирать его элементы, сценарий успешен, но он выполняет только одну итерацию, что означает, что он применяет только первое имя файла или первую итерацию, любые идеи для выполнения всех итераций и завершает sh задание. Большое спасибо !!
#!/usr/bin/env python3
import sys
import subprocess
with open(sys.argv[1], 'r') as f:
content1 = f.readlines()
content2 = [x.strip() for x in content1]
content3 = [item.replace("jane", "jdoe") for item in content2]
for x in content2:
for i in content3:
subprocess.run(['mv', '/home/ninja-coder/'+x, '/home/ninja-coder/'+i])