#python #powershell
Вопрос:
У меня есть .py
сценарий, который берет по одному .csv
за раз и предварительно обрабатывает его. Я выполняю команду таким образом в PowerShell:
python3 cleaning_script.py file1.csv results_file1.csv
. Это работает совершенно нормально. В папке более 300 файлов, которые я должен предварительно обработать, есть ли лучший способ (возможно, цикл, но я не знаю, как использовать цикл в этой среде), в котором я могу упомянуть папку, и каждый файл берется в качестве входных данных из исходной папки, а предварительно обработанные файлы сохраняются в папке назначения?
Из-за неадминистративных прав в системе (Windows 10) я использую PowerShell для выполнения команд.
Комментарии:
1. Я не хотел повторять вопрос; достаточно было просто изменить теги предыдущего. Кроме того, из документа терминала RStudio:
The RStudio terminal provides access to the system shell from within the RStudio IDE
; это означает, что он использует собственный терминал операционной системы. Я не уверен, что в Windows это PowerShell, это также может быть DOS.2. А, ладно. Спасибо. Я думаю, что нашел решение, благодаря вашему предложению я посмотрел его для Powershell, узнал, как оно работает, и оно работает нормально. Должен ли я удалить этот вопрос или опубликовать свой ответ здесь?
3. Рад, что вы решили свою проблему. Я не уверен в том, что тебе следует делать дальше. Вопрос PowerShell несколько тривиален, но интересно знать, что RStudio использует PowerShell в Windows (вместо DOS).
4. В любом случае, спасибо вам за то, что выявили мою основную проблему, проделали некоторую работу и решили ее 🙂
5. Вы можете получить «массив файлов» с помощью Get-ChildItem (сокращенно: gci). Это вы можете передать по каналу и пройтись по нему с помощью объекта foreach. Это было бы что-то вроде
Get-ChildItem foldername | Foreach-Object {script.py $_ }
более эффективного сохранения выходных данных gci в переменной ($vars = Get-ChildItem foldername
), а затем использованияForeach
для их перебора.foreach ($var in $vars) {script.py $var}
. Если я правильно понял ваш вопрос, то есть…