2 回答

TA貢獻1780條經驗 獲得超1個贊
您不能os.stat用于必須遍歷列表的列表:
def check_dir():
if not os.path.isdir(source_dir):
# Needed to detect top level files
print("Nothing in top folder.")
else:
root, dir_list, _ = next(os.walk(source_dir))
print(dir_list)
# get modified time for directories
for dir in dir_list:
dtime = os.stat(str(root + os.path.sep + dir))[stat.ST_MTIME]
if time.time() - dtime <= 7776000:
print("Found modification in last 90 days for folder =>", dir, time.ctime(dtime))
if __name__ == "__main__":
check_dir()

TA貢獻1804條經驗 獲得超2個贊
問題是它os.walk為您提供了一個相對路徑,source_dir例如:
import os
source_dir = '/tmp/'
relative_paths = [relative_path for relative_path in next(os.walk(source_dir))[1]]
print(relative_paths)
>>> ['com.google.Keystone', 'com.apple.launchd.liNmfkel1M', 'powerlog']
為了獲取統計信息,您需要使用每個文件夾的完整路徑,例如:
import os
import stat
source_dir = '/tmp/'
full_paths = [os.path.join(source_dir, relative_path) for relative_path in next(os.walk(source_dir))[1]]
print(full_paths)
>>> ['/tmp/com.google.Keystone', '/tmp/com.apple.launchd.liNmfkel1M', '/tmp/powerlog']
然后你可以使用它們:
import os
import stat
source_dir = '/tmp/'
full_paths = [os.path.join(source_dir, relative_path) for relative_path in next(os.walk(source_dir))[1]]
stats = [os.stat(path)[stat.ST_MTIME] for path in full_paths]
print(stats)
>>> [1581523169, 1581523164, 1581523141]
添加回答
舉報