Повторяющиеся строки кода последовательно с Pycharm - PullRequest
0 голосов
/ 17 февраля 2020

В настоящее время я создаю сценарий, который содержит около 100 строк кода. В PyCharm мне интересно дублировать каждую строку кода последовательно по всему сценарию. Пример, демонстрирующий желаемый результат, показан ниже.

# Current Code

print("Hello World")
print("I enjoy python")
print("Stack Overflow is amazing")

# Desired Output

print("Hello World")
print("Hello World")
print("Hello World")
print("I enjoy python")
print("I enjoy python")
print("I enjoy python")
print("Stack Overflow is amazing")
print("Stack Overflow is amazing")
print("Stack Overflow is amazing")

Поскольку это всего лишь пример с 3 исходными строками кода, я просто создал дубликаты кода, скопировав и вставив каждую строку. В проектах, которые содержат более 100 строк кода, это было бы непрактично. Как я могу сделать это в PyCharm без копирования и вставки построчно?

-Спасибо

Ответы [ 3 ]

1 голос
/ 19 февраля 2020

Попробуйте, с test.py в качестве входного скрипта:

x = [e.strip() for e in open("test.py", "r").readlines()]  # get lines, strip them of the '\n'
r = [(x[i]+'\n') * 3 for i in range(len(x))]               # multiply each line by three
with open("test_out.py", "w") as out:                      # open an output, writing mode
    out.write(''.join(r))                                  # join the lines, write to output 
    out.close()                                            # close the file (keep things clean)

Обрезка каждой строки '\ n' (которая может быть там или нет в самой последней строке), чтобы обеспечить последнюю строку всегда пишется правильно, то есть не как

print("Stack Overflow is amazing")print("Stack Overflow is amazing")print("Stack Overflow is amazing")

, а как

print("Stack Overflow is amazing")
print("Stack Overflow is amazing")
print("Stack Overflow is amazing")

, если возврат каретки отсутствует.

Не забудьте изменить имя выходного файла на фактический путь, если вы хотите, чтобы ваш выходной файл был где-то еще!

1 голос
/ 17 февраля 2020

Если вы хотите сделать это в PyCharm, вы можете использовать регулярное выражение заменить:

^(.*)$ заменить на $1\n$1\n$1:

enter image description here

Но если вы захотите сделать это, используя скрипт python, вы можете сделать что-то вроде этого:

with open('input.py') as f_input:
    with open('output.py', 'w') as f_output:
        f_output.writelines(sum([[x] * 3 for x in f_input], []))
0 голосов
/ 17 февраля 2020

Попробуйте:

# Using readlines() 
file1 = open('input_file.py', 'r') 
Lines = file1.readlines() 

# open a (new) file to write
outF = open("myNewFile.py", "w")

for line in Lines:
   i = 0
   while i < 3:
       outF.write(line)
       outf.write("\n")

outF.close()

Это создаст новый файл с каждой строкой, написанной 3 раза. Позже вы можете переименовать его так, как захотите.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...