保存到Windows上的桌面文件夹

时间:2016-06-15 10:54:01

标签: python windows filepath

我将文件保存到"桌面" 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"更改到目录并转到"桌面"文件夹中。

1 个答案:

答案 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()执行特定于您的操作系统的代码。