gpt4 book ai didi

python - 在 python 中使用 os.walk 更改目录

转载 作者:太空宇宙 更新时间:2023-11-04 10:51:16 25 4
gpt4 key购买 nike

我正在尝试编写一些递归搜索路径和子目录以查找以“FFD8”的十六进制值开头的文件的东西。我已经让它在运行脚本时使用参数参数中指定的位置,但是当它需要移动到子目录时就会出现问题。

import string, sys, os
os.chdir(sys.argv[1])
for root, dir, files in os.walk(str(sys.argv[1])):
for fp in files:
f = open(fp, 'rb')
data = f.read(2)
if "ffd8" in data.encode('hex'):
print "%s starts with the offset %s" % (fp, data.encode('hex'))
else:
print "%s starts wit ha different offset" % (fp)

我不知道为什么我需要使用 os.chdir 命令,但出于某种原因,如果没有它,当从我的桌面运行脚本时,它会忽略参数并始终尝试从桌面目录运行搜索,无论我指定的路径。

此输出为 autodl2.cfg starts wit ha different offset
DATASS.jpg starts with the offset ffd8
IMG_0958.JPG starts with the offset ffd8
IMG_0963.JPG starts with the offset ffd8
IMG_0963_COPY.jpg starts with the offset ffd8
project.py starts wit ha different offset
Uplay.lnk starts wit ha different offset
Traceback (most recent call last):
File "C:\Users\Frosty\Desktop\EXIF PROJECT\project2.py", line 15, in <module>
f = open(fp, 'rb')
IOError: [Errno 2] No such file or directory: 'doc.kml'

现在我知道为什么它在这里出错的原因,因为文件 doc.kml 位于桌面上的子文件夹中。谁能阐明更改目录的最简单方法,以便它可以继续扫描子目录而不会出现问题?谢谢!

最佳答案

您需要使用绝对文件路径来打开它们,但是 files 只列出没有路径的文件名。但是,root 变量确实包含当前目录的路径。

使用os.path.join将两者连接起来:

for root, dir, files in os.walk(str(sys.argv[1])):
for fp in files:
f = open(os.path.join(root, fp), 'rb')

关于python - 在 python 中使用 os.walk 更改目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13709268/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com