Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/329.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将Python.txt文件保存到用户';s桌面,但不在代码中说明我的用户名_Python - Fatal编程技术网

将Python.txt文件保存到用户';s桌面,但不在代码中说明我的用户名

将Python.txt文件保存到用户';s桌面,但不在代码中说明我的用户名,python,Python,我想创建一个.txt文件,它将保存到运行此代码的人的桌面上。我的当前解决方案指定我自己的特定桌面的路径,并包括我的用户名。我应该如何修改代码以使其适用于任何用户 filename = open('c:/Users/my_username/Desktop/filename.txt', 'w') 您可以使用独立于平台的方式自动扩展用户的主目录,因此在实践中,它可能看起来像: 打开( join(os.path.expanduser(“~”)、“Desktop”、“filename.txt”)、“w”

我想创建一个.txt文件,它将保存到运行此代码的人的桌面上。我的当前解决方案指定我自己的特定桌面的路径,并包括我的用户名。我应该如何修改代码以使其适用于任何用户

filename = open('c:/Users/my_username/Desktop/filename.txt', 'w')
您可以使用独立于平台的方式自动扩展用户的主目录,因此在实践中,它可能看起来像:

打开(
join(os.path.expanduser(“~”)、“Desktop”、“filename.txt”)、“w”
)作为fh:
#做事

您可以在操作系统中使用expanduser方法。路径

os.path.expanduser(“[您想要的用户名]”)


Nivs提供了一个很好的答案,但是如果桌面不在主目录中怎么办?我当前的工作和家庭桌面都运行Windows 10,桌面嵌套在OneDrive或DropBox下

让我们看看一个可能的解决方案,使用Pathlib,使用
relative_to
方法测量与主目录的距离并返回最小值。我们将使用递归方法查看目录并搜索
桌面
匹配项

行动中 它自己的字典将如下所示:

{WindowsPath('C:/Users/datanovice/anaconda3/Library/qml/QtQuick/Controls/Styles/Desktop'): 7,
 WindowsPath('C:/Users/datanovice/anaconda3/pkgs/qt-5.9.7-vc14h73c81de_0/Library/qml/QtQuick/Controls/Styles/Desktop'): 9,
 WindowsPath('C:/Users/datanovice/AppData/Local/Microsoft/PlayReady/Internet Explorer/Desktop'): 6,
 WindowsPath('C:/Users/datanovice/AppData/Local/Microsoft/PlayReady/Internet Explorer/InPrivate/Desktop'): 7,
 WindowsPath('C:/Users/datanovice/OneDrive/Desktop'): 2}

对于您的用例,它将类似于C.Nivs解决方案:

with open(
    pathfinder().joinpath('filename.txt'), 'w'
) as fh:

功能模块。
您可以使用获取当前活动用户的
getpass
库执行此操作,然后将其替换为用户名:

import getpass
filename = open('C:/Users/'+getpass.getuser()+'/Desktop/filename.txt', 'w') 
from pathlib import Path

def path_finder(directory=Path.home()):

    path_finder_dict = {}

    for child in Path.home().rglob('*'):
        if child.name == 'Desktop':
            distance = len(child.relative_to(Path.home()).parts)

            path_finder_dict[child] = distance

    return min(path_finder_dict, key=path_finder_dict.get)
import getpass
filename = open('C:/Users/'+getpass.getuser()+'/Desktop/filename.txt', 'w')