Созданные пользователем файлы журналов
Я получаю 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 ответ
Вот рабочая версия:
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()
Было несколько проблем с фрагментом кода, размещенным в вопросе:
Два оператора импорта были объединены. Каждый должен быть на отдельной строке.
os.path.join
функция не работает с открытым дескриптором файла.read()
а такжеclose()
методы были пропущены.Если целью является чтение того, что написано в режиме добавления, необходимо получить текущую позицию файла через
tell()
а такжеseek()
в эту позицию после записи в файл.Пока дозволено звонить
main()
без какой-либо условной проверки обычно лучше убедиться, что модуль вызывается как скрипт, а не как импортируемый.