Просто дикая догадка - публикация в качестве ответа, потому что это не соответствует системе комментариев.
В первый раз у вас есть только один файл. Подстановочный знак в команде будет расширен до:
./txt2pdf.py Results/first_file.txt
Во второй раз у вас есть два файла, поэтому команда расширяется до:
./txt2pdf.py Results/first_file.txt Results/second_file.txt
И вы получаете ошибку, потому что txt2pdf не ожидает нескольких имен файлов (исходя из сообщения об ошибке, мы не можем точно знать, какой txt2pdf.py вы используете).
Если вы работаете в Unix-подобной ОС, вы можете попробовать модуль sh вместо этого (не проверено):
import sh
from glob import glob
import os
# commenting line by line
def get_last_txt(path):
return sorted( # sort
glob(path + '/*.txt'), # all files in the folder
key=lambda f: os.stat(f).st_mtime # by modified time
)[-1] # return the last one
Тогда вы можете сделать это несколько раз:
sh.python('txt2pdf.py', get_last_txt("Results"))
Возможно, вам придется !pip install sh
, если он еще не установлен.
Если вы работаете в Windows, перейдите в Магазин Windows и установите Ubuntu. Подсистема Linux для Windows фактически превращает компьютер Windows в достойную рабочую станцию для разработки (лично я не люблю настольные компьютеры Linux и использую Mac или Windows с WSSL).
Если вы не хотите устанавливать Ubuntu из Магазина Windows, попробуйте заменить модуль sh на pbs - синтаксис немного отличается, поэтому вы должны проверить документацию или использовать этот хак вместо import sh
выше этим (возможно, вам придется сначала !pip install pbs
или conda install pbs
):
try:
import sh
except ImportError:
# fallback: emulate the sh API with pbs
import pbs
class Sh(object):
def __getattr__(self, attr):
return pbs.Command(attr)
sh = Sh()