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