Я новый пользователь Python. Я получил, чтобы узнать, как изменить значение параметра в одном файле. Сценарий:
#####test.py##########
from sys import argv
script,filename,sigma = argv
file_data = open(filename,'r')
txt = file_data.read()
txt=txt.replace('3.7',sigma)
file_data = open(filename,'w')
file_data.write(txt)
file_data.close()
Он запускается в командной строке с test.txt как
test.py test.txt 2.
3.7 заменяется на 2 в test.txt, в результате.
Теперь, если я хочу сделать то же самое для всех файлов .txt в каталоге, например.
test.py *.txt 2
Какие предлагаются модификации?
Ваши предложения высоко ценятся.
Хафиз .
2 ответа
Bash (или ваша оболочка) раскроет *.txt
(до test0.txt test1.txt ...
или как там называются файлы *.txt
в вашем текущем каталоге), прежде чем передать его в ваш скрипт на python. поэтому ваш скрипт на python получит много аргументов (а не только 2, как вы ожидаете). напечатайте sys.argv
для проверки.
Вы можете решить это в самом Bash с чем-то вроде
for name in *.txt; do test.py ${name} 2; done
В противном случае вам придется по-разному относиться к sys.argv
в python и учитывать более 2 аргументов.
Импорт glob решил эту проблему. Но у меня есть несколько вопросов.
Запрос 1:
Я переписываю свой код как:
#####test.py##########
from sys import argv
script,filename,sigma = argv
file_data = open(filename,'r')
txt = file_data.read()
txt=txt.replace('3.7'|'3',sigma) #gives syntax error
file_data = open(filename,'w')
file_data.write(txt)
file_data.close()
Я хочу заменить 3,7 или 3 сигмой. Какой будет исправленный код?
Запрос 2 .
Я переписываю это следующим образом:
#####test.py##########
from sys import argv
script,filename,sigma = argv
file_data = open(filename,'r')
txt = file_data.read()
txt=txt.replace('x="2"','x=sigma')
file_data = open(filename,'w')
file_data.write(txt)
file_data.close()
С участием
py test.py test.txt 3.
Я получаю х = сигма, но я хочу, чтобы х = 3
Какая будет модификация?
С Уважением,
Хафиз
Похожие вопросы
Новые вопросы
python-2.7
Python 2.7 является последней основной версией в серии 2.x и больше не поддерживается с 1 января 2020 года. Используйте общий тег [python] во всех вопросах Python. Не добавляйте этот тег просто для указания версии Python, которую вы используете, если только вопрос не касается проблемы, специфичной для Python 2.7.