最近,我开始使用python中的 Os 模块。最后,我来到了这种 Os.path 方法。所以这是我的问题。我在我的kivy项目中运行了这个方法只是为了测试,它实际上没有返回正确的输出。该方法包括查找是否存在任何目录并返回目录中的文件夹列表。否则,打印无效路径并返回 -1 。我传入一个现有目录并返回-1,但奇怪的路径是当我使用与python文件相同的文件夹中的相同路径从kivy项目中运行类似程序时,它返回所需的输出。我已经测试了python文件和目录名称 image ,该返回的路径无效。
def get_imgs(self, img_path):
if not os.path.exists(img_path):
print("Invalid Path...")
return -1
else:
all_files = os.listdir(img_path)
imgs = []
for f in all_files:
if (
f.endswith(".png")
or f.endswith(".PNG")
or f.endswith(".jpg")
or f.endswith(".JPG")
or f.endswith(".jpeg")
or f.endswith(".JPEG")
):
imgs.append("/".join([img_path, f]))
return imgs
答案 0 :(得分:1)
很难在没有调用函数的情况下看到代码。无论您传递什么参数,都不得为有效路径。我定期使用os
模块,并慢慢学习了许多有用的方法。在发生任何意外情况之前,我总是先打印出我正在读取或正在写入的路径,以防万一发生意外情况,例如,我可以看到img_path
变量。将文件浏览器中的路径复制并粘贴到目录中,并确保一切正常。
根据您的代码,您会发现其他一些有用的os.path
方法:
os.join(<directory>, <file_name.ext>)
比imgs.append("/".join([img_path, f]))
os.getcwd()
获取您的工作目录(我在开发脚本的开头打印该目录,以便在调试之前快速解决问题)。我通常使用完整路径来保证安全,因为从cmd与PyCharm运行时,Python路径可能会导致差异/问题
os.path.basename(f)
为您提供文件,而os.path.dirname(f)
为您提供目录。
似乎更好的方法是使用pathlib
和glob
。您可以遍历目录并使用通配符。
看这些:
遍历目录:How can I iterate over files in a given directory?
不同的文件类型:Python glob multiple filetypes
然后,您甚至无需检查是否os.path.exists(img_path)
,因为这将直接从文件系统读取文件。 glob
库中还有更多的通配符,例如*
代表任何/任何长度,?
代表任何字符,[0-9]
代表任何数字,可在以下位置找到:{{3 }}