我正在Windows8中运行Python35
我有一个python脚本,它从典型的jpg图像文件中获取exif元数据。它看起来“正常”,但每当我在脚本中键入新文件名时,就会遇到“没有这样的文件或目录问题”
例如,我将两个图像182830.jpg和182833.jpg放在我的目录C:\Python35\Scripts中
我的python脚本(我从stack exchange中获取并修改以使其正常工作,如下所示)也放在同一个目录中,该脚本实际上可以从Python35的空闲编辑器中正常运行。或者至少,脚本将在首次应用于图像文件“182830.jpg”时运行
from PIL import Image
from PIL.ExifTags import TAGS
# path to the image or video
imagename = "182830.jpg"
# read the image data using PIL
image = Image.open(imagename)
# extract EXIF data
exifdata = image._getexif()
# iterating over all EXIF data fields
for tag_id in exifdata:
# get the tag name, instead of human unreadable tag id
tag = TAGS.get(tag_id, tag_id)
data = exifdata.get(tag_id)
# decode bytes
if isinstance(data, bytes):
data = data.decode()
#print("{tag:30}: {data}")
print(tag, data)
image.close()
目前让我感到困惑和困惑的是-脚本将很好地运行该文件(即“182830.jpg”),如果我反复单击“运行”(在空闲编辑器中),脚本将保持良好运行
但是当我手动键入不同的文件名时,比如182833.jpg,我会收到一条错误消息,上面说[FileNotFoundError:[Errno 2]没有这样的文件或目录:“182833.jpg']
但是,非常有趣(并且可以重复)-如果我转到目录C:\Python35\Scripts,并实际使用鼠标复制文件的名称(而不是复制文件本身!),然后将复制的文件名粘贴到脚本中,脚本将正常工作/运行(始终)
另外-非常有趣的是,如果我将两个图像文件重命名为'pic1.jpg'和'pic2.jpg',那么(有趣的是)如果我只是通过手动将'1'(在pic1.jpg中)更改为'2'来编辑脚本,那么脚本绝对没有运行问题。。。反之亦然
任何有助于我理解“没有这样的文件或目录”问题的帮助都将是非常棒的
我发现,如果我从目录中抓取(例如,复制文件名)文件名(并将该名称粘贴到我的脚本中!),问题就永远不会发生。我发现手动编辑(通过键入)脚本中的文件名会导致“没有这样的文件”问题。提前谢谢大家
您可以浏览一下您正在空闲状态下运行此脚本的事实,但这可能是问题的一部分
老实说,这听起来像是一个工作目录问题或类似的问题;此外,您真的不应该将自己的代码(更不用说图像之类的数据)放在
C:\Python35\Scripts
中;这主要由pip
和其他Python工具管理因此,假设您将脚本和文件一起移动到
C:\KennysExifProgram\program.py
,那么我们可以编辑程序,使其在该目录中的所有JPEG中运行,最重要的是我们使用我们知道这些文件所在目录的绝对路径:
这对你来说应该更好!:)
(您还可以使用
image_directory = os.path.dirname(__file__)
将程序默认设置为其自身所在的目录。)相关问题 更多 >
编程相关推荐