传入字符串路径时os.walk()无输出,用os.getcwd()正常的问题
os.walk传入手动路径无输出的原因及解决办法
你手动指定的路径/Users/shiva/AppData/Local/Programs/Python/Python39存在明显错误——/Users是macOS系统的用户目录结构,而AppData是Windows系统特有的用户数据目录,两者不可能同时出现在一个有效路径里,这直接导致os.walk找不到目标目录,自然没有输出。而os.getcwd()获取的是当前脚本所在的有效目录,所以能正常遍历。
解决步骤:
- 确认系统类型:如果是macOS,Python39的默认安装路径一般是
/Library/Frameworks/Python.framework/Versions/39或者/Users/shiva/Library/Python/3.9;如果是Windows,路径应该是类似C:\Users\shiva\AppData\Local\Programs\Python\Python39的格式。 - 验证路径有效性:先通过
os.path.exists()检查路径是否存在,返回True才是有效路径,示例代码:
import os dir_path = '/Users/shiva/AppData/Local/Programs/Python/Python39' print(os.path.exists(dir_path)) # 输出False说明路径不存在
- 使用正确路径替换:根据你的实际系统修改路径后再传入os.walk,比如Windows下可以这样写:
import os # 转义反斜杠或者用原始字符串 dir_path = r'C:\Users\shiva\AppData\Local\Programs\Python\Python39' for dirpath, dirnames, filenames in os.walk(dir_path): print(f'dirpath={dirpath}\ndirnames={dirnames}\nfilenames={filenames}')
- 检查权限:如果路径存在但仍无输出,可能是当前用户没有该目录的读取权限,尝试以管理员身份运行脚本,或者调整目录的读取权限。
内容的提问来源于stack exchange,提问作者GENIUS NETWORK
相关产品推荐
相关产品推荐

