Как передать все файлы (с заданными шаблонами имен) программе Python в PyCharm, используя поле параметров в конфигурациях run / debug? - PullRequest
0 голосов
/ 08 января 2019

У меня есть куча файлов .html в каталоге, который я читаю в программу на Python, использующую PyCharm. Я использую оператор * (*) следующим образом в поле параметров диалогового окна конфигурации запуска / отладки в PyCharm: *.html , но это не работает. Я получаю следующую ошибку:

IOError: [Errno 2] No such file or directory: '*.html'

в строке, где я открываю файл для чтения в моей программе. Я думаю, что его чтение "* .html" буквально как имя файла. Буду признателен за помощь в обучении меня, как использовать звездный оператор в этом случае.

Приложение: Я довольно новичок в Python и Pycharm. Я запускаю свой скрипт, используя следующие параметры конфигурации:

enter image description here

Теперь я попробовал различные варианты параметров, например '*.html', "*.html" и просто *.html. Я также попробовал glob.glob('*.html'), но код воспринимает его буквально и считает, что само имя файла - «glob.glob ('*. Html')» и выдает ошибку. Я думаю, что это скорее вещь Pycharm, чем понимание bash или python. Я предполагаю, что я хочу, чтобы Pycharm пропустил все файлы каталога через это поле параметров на рисунке. Есть ли какой-то способ для меня, чтобы указать Pycharm НЕ рассматривать строку параметров буквально?

Способ обработки файлов заключается в запуске цикла for по списку sys.argv и вызове функции для каждого файла. Функция просто использует метод open(), чтобы прочитать содержимое файла в строку, чтобы я мог извлекать шаблоны из текста. Надеюсь, это поможет решить проблему немного лучше.

1 Ответ

0 голосов
/ 08 января 2019

Расширение имени файла является функцией bash. Поэтому, если вы вызовете свой скрипт на python из командной строки linux, он будет работать так же, как если бы вы указали все имена файлов в качестве аргументов для вашего скрипта. Pycharm не имеет этой функции, поэтому вам придется сделать это самостоятельно в своем скрипте Python, используя glob .

import glob
import sys
files = glob.glob(sys.argv[-1])

Чтобы сохранить совместимость между bash и pycharm, вы можете использовать что-то вроде этого:

import glob
globs = ['*.html', '*.css', 'script.js']
files = []
for g in globs:
    files.extend(glob.glob(g))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...