Mac系统下使用Python扫描目录时input函数报SyntaxError如何解决
错误原因
- 触发该报错的核心原因是你使用Python 2.x版本运行脚本:Mac系统默认预装的Python版本为2.7,而Python 2.x中的
input()函数会将用户输入的内容直接作为Python表达式解析执行,你输入的路径以/开头,不属于合法的Python表达式语法,因此触发SyntaxError。 - 另外代码中
print get_original_dir(selected)的写法仅兼容Python 2.x语法,若使用Python 3运行也会触发语法错误。
修复方案
有两种可选修复方式,更推荐使用第二种:
方案1:适配Python 2.x运行
将代码中input()替换为raw_input()即可,raw_input()会将所有用户输入当作普通字符串处理,不会做表达式解析。修改后的对应代码片段如下:
if __name__ == '__main__': selected = raw_input("Input target dir: ") print get_original_dir(selected)
修改后直接用python 脚本文件名.py即可正常运行。
方案2:使用Python 3运行(更推荐,Python 2已经停止官方维护)
- 先确认Mac上已安装Python 3,可在终端执行
python3 --version查看版本,无返回可直接下载Python 3安装包安装 - 修改代码中的print语句为Python 3兼容的函数写法:
if __name__ == '__main__': selected = input("Input target dir: ") print(get_original_dir(selected))
- 运行脚本时使用
python3 脚本文件名.py命令即可正常执行。
可选优化
你当前的代码仅会遍历返回目标目录下所有子目录路径,如果需要返回所有条目(包含文件和目录),可以将列表推导式中的if f.is_dir()判断条件删除即可。
内容的提问来源于stack exchange,提问作者Kyle Sponable
相关产品推荐
相关产品推荐

