Я в процессе написания сценария python, который принимает два аргумента, которые позволят мне выводить содержимое папки в текстовый файл для меня для использования в другом процессе. Фрагмент У меня есть ниже:Python: попытка поместить содержимое папки в текстовый файл:
#!/usr/bin/python
import cv2
import numpy as np
import random
import sys
import os
import fileinput
#Variables:
img_path= str(sys.argv[1])
file_path = str(sys.argv[2])
print img_path
print file_path
cmd = 'find ' + img_path + '/*.png | sed -e "s/^/\"/g;s/$/\"/g" >' + file_path + '/desc.txt'
print "command: ", cmd
#Generate desc.txt file:
os.system(cmd)
Когда я пытаюсь запустить, что с моей командной строки, я получаю следующий результат, и я понятия не имею, как это исправить.
sh: 1: s/$//g: not found
Я тестировал команду я использую, выполнив следующую команду в терминале, например свежей, и она работает отлично:
images/*.png | sed -e "s/^/\"/g;s/$/\"/g" > desc.txt
Кто-нибудь может понять, почему мой фрагмент не работает? Когда я запускаю его, я получаю пустой файл ...
Заранее благодарим!
os.system имеет проблемы, попробуйте использовать вместо subprocess.call. Это позволяет гораздо больший контроль над вызовами внешних команд с помощью аргументов. Это, как говорится, почему порождает команду оболочки вообще? Не можете ли вы использовать os.walk и сохранить все это на Python? –
вы можете использовать 'os.listdir()' с 'fnmatch.filter()' или 'glob.glob ('images/* .png')' – furas