Хорошо, я понял это, а потом немного.Скорее всего, это не самый лучший способ сделать это, но пока он работает:
Я ничего не изменил на генератор случайных персон, поэтому он все еще выглядит так:
import random
import sys
sys.stdout = open('roles.csv', 'a')
def role_generator():
firstnames = open ('first_names.txt').read().splitlines()
lastnames = open ('last_names.txt').read().splitlines()
months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']
for num in range(500):
first = random.choice(firstnames)
last = random.choice(lastnames)
day = random.randint(1, 29)
month = random.choice(months)
year = random.randint(1960, 2001)
idnumber = random.randint(1234567, 9999999)
print(f'1, last name, {last}\n2, first name, {first}\n3, id number, {idnumber}\n4, date of birth, {day}-{month}-{year}\n')
role_generator()
Я добавил команду терминала в PDF Filler:
def rolegenerator():
os.system('pdfforms inspect screening.pdf')
os.system('pdfforms fill roles.csv')
os.system('cp /home/PycharmProjects/untitled/filled/screening.pdf /home/PycharmProjects/untitled/screening/screening.pdf')
Вы должны убедиться, что в вашей системе установлен pdfforms.Я использую Pycharm для своих проектов, поэтому я просто установил его через эту программу.PDFForms «проверит» ваш PDF (убедитесь, что это заполняемая форма) и создаст «тестовую» папку в каталоге вашего проекта.Взгляните на свой «тестовый» PDF, чтобы понять, как помечено каждое поле.Эти числа понадобятся вам при создании файла csv в генераторе случайных персон (посмотрите на строку печати и сравните ее с приведенным выше примером csv).
Следующая команда заполнит вашу PDF-форму:документ CSV у вас есть в командной строке.В моем случае это "role.csv".Это создаст «заполненный» каталог и будет иметь заполненный PDF для использования вами.
Затем я решил скопировать заполненный pdf в другой каталог с именем «screening», который является третьей командой.
Я использовал следующий код для сохранения каждого файла с отдельным именем:
def save_file():
path = "/home/PycharmProjects/untitled/screening/screening.pdf/"
newPath = "/home/PycharmProjects/untitled/screening"
i = 1
for root, dirs, files in os.walk(path):
for name in files:
base, extension = os.path.splitext(name)
if not os.path.exists(os.path.join(newPath, base + extension)):
oldfile = os.path.join(os.path.abspath(root), name)
newfile = os.path.join(newPath, base + extension)
os.rename(oldfile, newfile)
else:
oldfile = os.path.join(os.path.abspath(root), name)
newfile = os.path.join(newPath, base + '_' + str(i) + extension)
i += 1
os.rename(oldfile, newfile)
save_file()
В этой части все еще есть некоторые проблемы.Он переименовывает все файлы в каталоге каждый раз;но я все еще могу сгенерировать 500 случайных файлов.Я хотел, чтобы файлы были помечены в соответствии с человеком, которому принадлежит информация, но я не мог понять это.Я получил эту часть от Увеличивая номер в имени файла, когда файл существует .У меня нет ссылок на другие решения ... извините.
Для последней части я добавил цикл с задержкой.Я не знаю почему, но добавление временной задержки позволило программе работать без сбоев.вероятно, так как он обрабатывает так много, это дает системе время наверстать упущенное:
if __name__ == '__main__':
for i in range(10):
role_creator()
time.sleep(.5)
rolegenerator()
time.sleep(.5)
save_file()
time.sleep(.5)
Опять же, это, вероятно, не лучшее решение, но оно работает.