2016-08-16 5 views
-3

Я получаю TypeError: object of type file' has no len() Я проследил проблему до пути, установленного при исполнении.пользователь создал файлы журнала

Что мне не хватает, чтобы исправить эту ошибку, обнаруженную в замедлении или использовании «savePath» в «temp = os.path.join (savePath, files)»?

def printTime(time): 
    savePath = "C:\Users\Nicholas\Documents" 
    files = open("LogInLog.txt", "a") 
    temp = os.path.join(savePath, files) 
    files.write("A LogIn occured.") 
    files.write(time) 
    print files.read 
    files.close 

main() 

Вся программа ниже для справки:

from time import strftime 
import os.path 

def main(): 
    getTime() 

def getTime(): 
    time = strftime("%Y-%m-%d %I:%M:%S") 
    printTime(time) 

def printTime(time): 
    savePath = "C:\Users\Nicholas\Documents" 
    files = open("LogInLog.txt", "a") 
    temp = os.path.join(savePath, files) 
    files.write("A LogIn occured.") 
    files.write(time) 
    print files.read 
    files.close 

main() 
+1

вы должны обратиться https://docs.python.org/2/library/logging.html – pigletfly

+0

«что-то происходит не так внутри' PrintTime() 'функция» не вопрос, по крайней мере сказать _what_ идет не так. – Julien

+0

Извините, отредактировал мой вопрос ... подумал, что я сам объяснил, что я пытался сделать ... но я не слишком сильно использовал импорт импорта os.path, и у меня возникли проблемы с попыткой сохранить файл в каталог в коде –

ответ

1

Вот рабочая версия:

from time import strftime 
import os.path 

def main(): 
    getTime() 

def getTime(): 
    time = strftime("%Y-%m-%d %I:%M:%S") 
    printTime(time) 

def printTime(time): 
    savePath = "C:\Users\Nicholas\Documents" 
    logFile = "LogInLog.txt" 
    files = open(os.path.join(savePath, logFile), "a+") 
    openPosition = files.tell() 
    files.write("A LogIn occured.") 
    files.write(time) 
    files.seek(openPosition) 
    print(files.read()) 
    files.close() 

if __name__ == '__main__': 
    main() 

Были некоторые проблемы с фрагментом кода, публикуемым в вопросе:

  1. Два импортных атеки были объединены вместе. Каждая из них должна быть отдельной строкой.

  2. Функция os.path.join не работает при открытии файла.

  3. read() и close() методов отсутствовали парсеры.

  4. Если намерение состоит в том, чтобы читать то, что написано в режиме добавления, это необходимо, чтобы получить текущую позицию файла через tell() и seek() на эту должность после того, как записи в файл.

  5. В то время как законно звонить main() без какой-либо условной проверки, обычно лучше убедиться, что модуль вызывается как скрипт, а не импортируется.

+0

Выполнено отлично и так же, как я хотел ... и спасибо за ваш пробой, это, безусловно, поможет моему будущему этой программы. Еще одна вещь, потому что я обнаружил, что .pcf (скомпилированные файлы python) не запускаются правильно при запуске Windows, я изучал, как использовать pyinstaller, и у меня возникают проблемы с тем, как фактически запустить pyinstaller на моем .py файл для создания автономного .exe-файла, чтобы окна могли запускать файл без проблем. какие-либо предложения? –

+0

Добро пожаловать. Я не очень хорошо знаком с платформой Windows, поэтому я не могу предложить никаких предложений для вашего вопроса «pyinstaller», кроме того, что здесь возникает вопрос о переполнении стека. Удачи! –

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