Я написал пару функций, чтобы получить последний файл. Кажется, что код работает правильно, только вместо того, чтобы перечислять файлы из целевого пути, он перечисляет файлы из того места, где находится программа python. Ниже приведен код:
import os
import platform
path = '/tmp/'
def newest_file(path='.'):
files = os.listdir(path)
paths = [os.path.join(path, basename) for basename in files]
if platform.system() == 'Windows':
return max(paths, key=os.path.getctime)
else:
return max(paths, key=os.path.getmtime)
def stamp(newest_file):
file_stamp = os.path.getmtime(newest_file)
return file_stamp, newest_file
def file_compare(file_stamp, file_name):
try:
with open(f'{path}stamp.txt') as f:
old_stamp = float(f.read())
if old_stamp == file_stamp:
print(f'No change: {file_name} --> {file_stamp}')
else:
print(f'New file: {file_name} --> {file_stamp}')
logger.info(f'{file_name} --> {file_stamp}')
with open(f'{path}stamp.txt', 'w') as f:
f.write(str(file_stamp))
except OSError:
with open(f'{path}stamp.txt', 'w') as f:
f.write(str(file_stamp))
if __name__ == '__main__':
newest_file = newest_file()
file_stamp = stamp(newest_file)[0]
file_name = os.path.basename(stamp(newest_file)[1])
file_compare(file_stamp, file_name)
Таким образом, вместо того, чтобы перечислять файлы из '/ tmp', он перечисляет файлы из '/ opt', там, где находится мой код на python.
Если я использую
`path = glob.iglob('/tmp/*.txt')`
и просто используйте
def newest_file(path):
И удалив переменные 'files' и 'paths' из программы, я получаю следующее сообщение об ошибке:
Traceback (most recent call last):
File "new_x20.py", line 45, in <module>
newest_file = newest_file()
TypeError: newest_file() missing 1 required positional argument: 'path'
Я почесал голову, но не смог выяснить проблему. Пожалуйста, помогите мне найти мою ошибку
Спасибо