Python: генерирует ранжированные числа и выводит результат в файл с новой строкой после каждого добавленного значения - PullRequest
0 голосов
/ 27 июня 2018

Итак, я пытаюсь сгенерировать список числовых значений, например, от 1 до 100000.

Я создал скрипт, который делает это, но он выводит только вывод на экран:

1
2
n
100000

Мне нужно то же самое, но оно добавляется в файл с новой строкой после каждого значения:

1
2
n
100000 

Это скрипт, который генерирует числа:

def num_gen(min, max):
for i in range(min, max):
    print(i)

print('Enter minimum Appoge value. e.g. 1000')
min_value = int(input())
print("Enter maximum Appoge value. e.g. 3000000")
max_value = int(input())

num_gen(min_value, max_value)

Это сценарий, который я написал при попытке добавить вывод в файл:

def num_gen(min, max):
appoge_list = file('appoge_wordlist.txt', 'w')
for i in range(min, max):
    appoge_list.write(str(i))
    appoge_list('\n')
appoge_list.close()
print('The appoge_list, appoge_wordlist.txt, has been generated. :)')

print('Enter minimum Appoge value. e.g. 1000')
min_value = int(input())
print("Enter maximum Appoge value. e.g. 3000000")
max_value = int(input())

num_gen(min_value, max_value)

Решение : Хорошо, я пытался достичь вышеизложенного, а затем попытался все упростить, я позволил коду все это объяснить: Вот новый скрипт, не принимает аргументов:

def num_gen():
for i in range(10000, 2000001):
    print(i)
num_gen()

Затем выполните команду: python appoge_generator.py > appoge_wordlist.txt

Чтобы запустить скрипт из командной строки, вы бы python appoge_generator.py просто добавили >, что означает добавление вывода процедуры в файл appoge_wordlist.txt вместо экрана. Теперь у меня 1990001 строк, 14,2 МБ словаря, сгенерированного за 0,9 секунды. Я надеюсь, что кто-то найдет это полезным.

Ответы [ 2 ]

0 голосов
/ 27 июня 2018

Может быть быстрее / удобнее использовать Python для записи в файл:

with open('appoge_wordlist.txt', 'w') as file:
    for i in range(10000, 2000001):
        file.write('{}\n'.format(i))
0 голосов
/ 27 июня 2018

Другой вариант, который вы могли бы рассмотреть:

with open('appoge_wordlist.txt', 'wa') as a_file:
    a_file.write('\n'.join([str(val) for val in range(10000, 2000001)]))

В основном откройте файл, в который вы хотите записать, используя менеджер контекста (синтаксис with open(...)) в режиме «запись-добавление» (аргумент 'wa'), создайте строку чисел, к которой добавляются новые строки с '\n'.join(...) и, наконец, запишите эту строку в файл с помощью a_file.write(...).

Если вы хотите, чтобы это вызывалось из командной строки и позволяли передавать любые желаемые начальные и конечные значения и любое имя файла, я предлагаю посмотреть на отличный argparse модуль .

...