fileinput module имеет очень уродливый API, я нахожу красивый модуль для этой задачи - in_place , пример для Python 3:
import in_place
with in_place.InPlace('data.txt') as file:
for line in file:
line = line.replace('test', 'testZ')
file.write(line)
Основное отличие от fileinput:
Пару заметок о вашей ситуации. В отличие от SVN и других традиционных систем управления исходным кодом, Git в первую очередь предназначен для размещения 1 проекта на репо . Это ни в коем случае не является жестким правилом, есть способы разместить исходный код из более чем одного проекта в одном репозитории Git. Но вот две причины, чтобы рассмотреть возможность использования вместо Git subtree
или submodule
.
1.) Поскольку Git является распределенной системой управления исходным кодом, репозитории могут увеличиваться в размерах гораздо быстрее. Это может сделать клонирование репо большой болью.
2.) Поскольку Git commit
- это фиксация всего репо, а не только подпапки, merge
в ветке master
(или эквивалент) может стать сложной для новичков. И history
ветви может быть более сложным, чтобы понять, что действительно изменилось в наборе коммитов.
Может быть полезно дать команде разработчиков полного стека один репо для клонирования, чтобы работать над всем решением. В вашем случае я мог бы рассмотреть репозиторий «host», который содержит subtrees
или submodules
для репозиториев Git, содержащих различные компоненты решения полного стека. Это позволило бы разработчику сделать один клон и получить полный исходный код.
Я предлагаю использовать submodule
, если компоненты тесно связаны и часто меняются синхронно. Используйте subtree
, если компоненты интегрируются реже и / или по заданному графику выпуска.
Добро пожаловать в Переполнение стека.
Если ваш код зафиксирован и передан, вы почти ничего не можете сделать безопасно, так что не беспокойтесь об ошибках.
Тем не менее, в вашем конкретном случае вам не нужно делать много. Просто создайте новый каталог project-one
, используя mkdir project-one
. Переместите file-one
и file-two
в него, используя git mv file-one file-two project-one
, а затем подтвердите новые изменения, используя git commit
(команда git mv автоматически установит переименования)