2015-09-18 2 views
0

Я изучаю python как сейчас, поэтому я все еще новичок. Я создал систему шифрования, которая выводит начальный пароль, зашифрованный пароль и дату в текстовый файл. Метод сейчас очень прост:Форматирование нескольких столбцов данных в текстовом файле

now = datetime.now() 
date = ('%s/%s/%s %s:%s:%s' % (now.day, now.month, now.year, now.hour, now.minute, now.second)) 
writePass = finalPass.translate(passSwap) 
with open("capec_dictionary.txt", "a") as text_file: 
    print(initialPass.format(), "  -  ", writePass.format(), "  -  ", date, file=text_file) 
    print("Password has been saved to dictionary.") 

В результате, как показано ниже:

hi  -  *******  -  18/9/2015 17:55:15 
hello  -  **********  -  18/9/2015 17:55:20 
test  -  **********  -  18/9/2015 17:55:23 
testing  -  **********  -  18/9/2015 17:55:28 
password  -  *************  -  18/9/2015 17:55:34 
passwords  -  **************  -  18/9/2015 17:55:45 
myspecialpassword  -  ************************  -  18/9/2015 17:55:57 
myspecialpass  -  *******************  -  18/9/2015 17:56:2 
imlearningpython  -  *******************  -  18/9/2015 17:56:15 
imlearning  -  ***************  -  18/9/2015 17:56:21 
sillypass  -  **************  -  18/9/2015 17:56:29 
lamepass  -  *************  -  18/9/2015 17:56:38 
testcomplete  -  ******************  -  18/9/2015 17:56:56 
test  -  *********  -  18/9/2015 17:57:0 
testing  -  ************  -  18/9/2015 17:57:6 
goodbye  -  ************  -  18/9/2015 17:57:9 
bye  -  ********  -  18/9/2015 17:57:17 

Это действительно грязно, и я хочу, чтобы очистить в вверх. Первый .. могу ли я добавить что-то в python, чтобы создать заголовок «Pass» «Шифрование» и «дата»? Во-вторых, я хочу сгенерировать код, в котором его можно лучше форматировать. Например, самая длинная строка для пяти пробелов между ними.

Что-то вроде этого:

Password     Encryption      Date 

hi      *******       18/9/2015 17:55:15 
hello      **********      18/9/2015 17:55:20 
test      **********      18/9/2015 17:55:23 
testing     **********      18/9/2015 17:55:28 
password     *************     18/9/2015 17:55:34 
passwords     **************     18/9/2015 17:55:45 
myspecialpassword   ************************   18/9/2015 17:55:57 
myspecialpass    *******************    18/9/2015 17:56:2 
imlearningpython   *******************    18/9/2015 17:56:15 
imlearning    ***************     18/9/2015 17:56:21 
sillypass     **************     18/9/2015 17:56:29 
lamepass     *************     18/9/2015 17:56:38 
testcomplete    ******************    18/9/2015 17:56:56 
test      *********      18/9/2015 17:57:0 
testing     ************      18/9/2015 17:57:6 
goodbye     ************      18/9/2015 17:57:9 
bye      ********       18/9/2015 17:57:17 

ответ

3

Вам нужно использовать метод .format() строкового объекта. Например.

date = datetime.now().strftime('%m/%d/%y %H:%M:%S') 

with open("capec_dictionary.txt", "a") as text_file: 
    template = '{:24s} {:24s} {:18s}\n' 
    text_file.write(template.format('Pass', 'Encryption', 'Date')) 

    writePass = finalPass.translate(passSwap) 
    text_file.write(template.format(finalPass, writePass, date)) 
+0

спасибо. Есть ли что-нибудь, что я могу сделать для заголовка (Пароль, Шифрование, Дата)? –

+0

Я добавил это также .. См. '' 'Print (template.format ('Pass', 'Encryption', 'Date'))' '' line –

+0

Прости, что я этого не видел. К сожалению, использование этого метода дает мне ошибку «неверная строка формата» –

2

Вы ищете что-то вроде

print('{:8s}'.format(my_str)) 

Это будет пэда ваша строка справа с пробелами, чтобы обеспечить его 8 символов в ширину.

Что касается заголовка, вы можете просто поместить его в файл как фиксированную строку.

Смежные вопросы