2016-08-16 15 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

적어도 _what_ 말, 문제가 아닙니다 "무언가는'printTime 함수는()가'기능은 내 잘못 가고있다" 잘못되고있다. – 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 개 가져 오기 st atements는 함께 연결되었습니다. 각각은 별도의 줄에 있어야합니다.

  2. os.path.join 함수는 열린 파일 핸들에서 작동하지 않습니다.

  3. read()close() 방법에는 괄호가 없습니다.

  4. 의도가 추가 모드로 작성된 것입니다 무엇을 읽을 경우,이 파일에 작성 후 그 위치 tell()seek()를 통해 현재 파일 위치를 얻을 필요가있다.

  5. 조건부 검사없이 main()을 호출하는 것이 합법적이지만 일반적으로 모듈을 가져 오는 것과 달리 스크립트로 호출하는 것이 가장 좋습니다.

+0

완벽하게 실행되고 싶었던 것처럼 ... 그리고 당신의 고장에 감사드립니다. 확실히이 프로그램의 미래를 도울 것입니다. 한가지 더, .pcf (파이썬 컴파일 된 파일)가 창을 시작할 때 제대로 실행되지 않는다는 것을 알았 기 때문에 pyinstaller를 사용하는 방법을 연구하고 실제로 .py에서 pyinstaller를 실행하는 방법을 알아내는 데 어려움을 겪고 있습니다. 파일을 사용하여 독립 실행 형 .exe 파일을 만들면 windows가 문제없이 파일을 실행할 수 있습니다. 어떤 제안? –

+0

당신을 가장 환영합니다. Windows 플랫폼에 익숙하지 않아 스택 오버플로에 관한 다른 질문을 한 번 더 열어도 pyinstaller 질문에 대한 제안을 드릴 수 없습니다. 행운을 빕니다! –