python - 为什么这段代码不能在 windows 上运行,它在 mac 上运行良好
问题描述
此代码在 Mac 上运行,但在 Windows 上不起作用。我使用 pycharm (2019.2) 作为 IDE 和 python 3.7。
import glob
import shutil
import os
dst = '/base/a/CAR1'
alter = '/base/a/CAR2'
path = '/base/a/Tub*'
for filename in glob.glob(path + 'Finsa*.txt'):
if '19999' in open(filename, 'r').read():
shutil.copyfile(filename, os.path.join(dst, os.path.basename(filename)))
elif '18888' in open(filename, 'r').read():
shutil.copyfile(filename, os.path.join(alter, os.path.basename(filename)))
即使我执行以下操作也不起作用-
for filename in glob.glob('C:/user/base/a/CAR1*.txt'):
print(filename)
结果:
进程以退出代码 0 结束。
发生这种情况是因为 python 无法读取 Windows 文件目录吗?我已经尝试了所有方法,包括反斜杠、正斜杠、双斜杠。
解决方案
使用 os 模块并将基础文件夹放在您的项目目录中:
import os
path = os.path.join(os.getcwd(), 'base', 'a', 'Tub*')
for filename in glob.glob(os.path.join(path, 'Finsa*.txt')):
您获得了平台之间的可移植性(假设在 Windows 和 Linux 中,基本文件夹都在 python 项目空间中)。
推荐阅读
- ios - 使用 xcodebuild 并行构建多个目标
- javascript - 使用 create-react-app -Simple 问题在 React 中实现 Redux
- c++ - 如何通过 Win API 监控文件更改
- java - Java POI PivotTable 设置行默认折叠
- python - 在Flower中过滤任务结果和任务结果深度以监控Celery worker
- c++ - 无效交换(int *a,int *b);为什么交换(a,b)有效?
- azure-active-directory - 尝试使用 OpenID 和 dotnetopenauth 登录 Azure AD,但得到“未找到 OpenID 端点”。
- java - Spring Boot - 根据标志通过本地数据库或 Active Directory 进行身份验证
- php - CakePHP 3 将 .ctp 模板输出为 CSV 文件
- java - Java:尝试使用可实例化的类和数组打印每 3 周的平均温度