【发布时间】:2016-06-15 10:54:01
【问题描述】:
我在将文件保存到 Windows 上的“桌面”文件夹时遇到问题。我有两个 try 声明。第一个尝试为 Mac 保存文件。第二个尝试将其保存为 Windows。第二个except 处理程序默认将文件保存在与应用程序相同的文件夹中。
try:
wb = openpyxl.load_workbook(os.path.expanduser('~/Desktop/' +
dateCur + '_' + timeCur + '_bap_attendance.xlsx'))
except:
try:
wb = openpyxl.load_workbook(os.getenv('%HOMEPATH%') + '\\Desktop\\' +
dateCur + '_' + timeCur + '_bap_attendance.xlsx')
except:
wb = openpyxl.load_workbook(
self.manager.get_screen('offline').ids.label3.text)
当我收到错误消息时,它通常表示它正在寻找Users\BobSmith,但 Windows 帐户实际上应该在用户名中有一个空格。 getpass.getuser() 也返回“BobSmith”,但我需要输入“Bob Smith”才能切换到目录并进入“Desktop”文件夹。
【问题讨论】:
-
你打印
os.path.expanduser('~/Desktop')的值了吗?要扩展初始的“~”,它会尝试os.environ['HOME']、os.environ['USERPROFILE']和join(os.environ['HOMEDRIVE'], os.environ['HOMEPATH'])。通常HOME没有在 Windows 上定义,但USERPROFILE应该是。 -
谢谢!出于某种原因,它打印正确,但是当我运行程序时,它仍然说找不到路径并打印出没有用户帐户空格的路径,即“找不到 ...\BobSmith\”它是必需的。今晚我会尝试一些事情来看看这个问题到底发生在哪里,但我猜这是开放声明。我想我还记得看到一些关于该文件不是 openpyxl 的 zip 文件的信息。今晚晚些时候我回来后会发布更多内容。
-
“正确”是指打印
C:\Users\Bob Smith\Desktop吗?同时打印os.environ['HOME']、os.environ['USERPROFILE']和os.path.join(os.environ['HOMEDRIVE'], os.environ['HOMEPATH'])。 -
我刚刚编写了一个快速程序,它使用
os.path.normcase(os.path.expanduser('~/Desktop/OSX/' + dateCur + '_' + timeCur + '_bap_attendance.xlsx'))执行程序的相同任务。这行得通,现在我不需要为这两个系统编写两个替代路径。当添加到最终程序中时,它也可以工作。感谢您的帮助!