2013-09-09 5 views
0
count = 0 
answer = "" 
pass_pool={"CSRP":"","pos":"","erp":"","comverse":"","miki":"","citrix":""} 
name = "" 


def program_start(): 
    answer = input('Do you want to make some TXT with the same passwords? y\\n :') 
    count = int(input('How many TXT files do you want to make?')) 
    name = input('Enter the hot user id:') 
    name = name+".TXT" 
    password_collector() # collect password to pass_pool dictionary 
    create_file() #create TXT file. it has to be in capital "TXT" 
    #for the safe program. 

def create_file(): 
    newTXT = open(name, "w") 
    newTXT.write(name + "\n \n") 
    for system , password in pass_pool.items(): 
     newTXT.write(system + ":" + password) 
    newTXT.close() 

я получаю:FileNotFoundError: [Errno 2] Нет такого файла или каталога:

File "C:\Python33\mypy\txt creator.py", line 16, in create_file 
newTXT = open(name, "w") 
FileNotFoundError: [Errno 2] No such file or directory: 

Из того, что я смотрю на Google эта ошибка означает, неправильный путь или файл не найден. Но я проверяю с sys.path и видел, что "C:\Python33\mypy" на моих путях, и создаю файл с "w", поэтому он должен работать без проблем.

Когда я использовал только функцию create_file() в оболочке, она работает без проблем.

+0

Используйте сырые строки или избежать «\\», иначе «\ т» рассматривается как символ табуляции: 'г«C: \ Python33 \ mypy \ TXT creator.py» ' –

ответ

2

При установке значения name в program_start, Python создает переменную name локального размаху этой функции, которая маскирует глобальный name, поэтому глобальное значение остается неизменным. В create_file вы используете неизменный глобальный name, который равен "", и открытие файла с именем "" дает вам ошибку.

Быстрый и грязный исправить было бы добавить

global name 

в начале program_start. Но гораздо понятнее написать

count = 0 
answer = "" 
pass_pool={"CSRP":"","pos":"","erp":"","comverse":"","miki":"","citrix":""} 

def program_start(): 
    answer = input('Do you want to make some TXT with the same passwords? y\\n :') 
    count = int(input('How many TXT files do you want to make?')) 
    name = input('Enter the hot user id:') 
    name = name+".TXT" 
    password_colector() # collect password to pass_pool dic 
    create_file(name) #create TXT file. it has to be in capital "TXT" 
    #for the safe pogram. 

def create_file(name): 
    newTXT = open(name, "w") 
    newTXT.write(name + "\n \n") 
    for system , password in pass_pool.items(): 
     newTXT.write(system + ":" + password) 
    newTXT.close() 
+0

ho thats правый! Я пропустил это. поэтому я получу проблему с подсчетом и ответом на .. thx alot! –