我将文件保存到"桌面" 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"更改到目录并转到"桌面"文件夹中。
答案 0 :(得分:1)
os.getenv()
将返回None
。在我看来,检查getenv
是否不返回None
并且只执行try
/ except
块会更优雅。
更相关的问题似乎是您尝试检索%HOMEPATH%
的方式,虽然Windows使用%sys_var%
表示系统变量,但getenv()
需要它们而没有%
符号。另外HOMEPATH
返回路径,但没有驱动器,HOME
or USERPROFILE
将返回完整路径。
尝试以下修改后的代码,它也适用于Windows。
try:
wb = openpyxl.load_workbook(os.path.expanduser('~/Desktop/' + dateCur + '_' + timeCur + '_bap_attendance.xlsx'))
except:
homepath = os.getenv('USERPROFILE')
if homepath:
try:
wb = opennpyxl.load_workbook(homepath + '\\Desktop\\' + dateCur + '_' + timeCur + '_bap_attendance.xlsx')
except:
wb = openpyxl.load_workbook(self.manager.get_screen('offline').ids.label3.text)
此外,您可以使用sys.platform()执行特定于您的操作系统的代码。