Я хочу прочитать все файлы в каталоге и передать их через командную строку в другую программу. Ниже приведена часть моего кода (для одного файла здесь), который, похоже, не работает, и я не понимаю, почему это не сработает. Мой код (с немного отладки печати):Python: subprocess.Popen поведение переменной
# -*- coding: iso-8859-15 -*-
# Python 3
avidemux_dir = "C:\\Program Files (x86)\\Avi Demux\\avidemux.exe"
start_dir = "F:\\aaa" # without ending backslash!
extension = ".mpg"
import os
import subprocess
for dirpath, dirnames, filenames in os.walk(start_dir):
if filenames:
first_file = os.path.join(dirpath, filenames[0])
test2 = "--load " + first_file
print(dirpath) #results in: F:\aaa\av01
print(first_file) #results in: F:\aaa\av01\av01.mpg
print(test2) #results in: --load F:\aaa\av01\av01.mpg
p1 = subprocess.Popen([avidemux_dir, "--load", first_file])
p2 = subprocess.Popen([avidemux_dir, test2])
Для этого примера, Avidemux будет работать (загрузить нужный файл) только для p1. p2 не работает. Почему?
пример командной строки, которая работает в .bat:
avidemux.exe --load F:\aaa\av01\av01.mpg
Я действительно хотел бы иметь все это в одной строке, как в p2, потому что я присоединяюсь больший список файлов вместе в одну большую строку с правильным переменные для avidemux.
Ожидаете ли вы, что файл будет загружен и сохранен в 'p1'? – aIKid
Несвязанные: вы можете использовать необработанные строковые литералы, такие как 'r" F: \ aaa "' (уведомление: 'r" "prefix), чтобы избежать экранирования обратных косых черт в путях Windows. – jfs