【问题标题】:how to get the desktop location of the user如何获取用户的桌面位置
【发布时间】:2020-06-26 16:26:59
【问题描述】:

我正在制作一个 python 脚本来通过 FFMPEG 合并音频和视频文件,下面显示的代码工作得很好,但我想要做的是我提供的(路径)是我的桌面位置,但如果其他人会运行此代码然后他们将得到错误。那么我怎样才能为任何计算机提供通用的桌面路径

import os
import subprocess
import tkinter as tk

root = tk.Tk()
os.chdir('C://Users/ravir/desktop/') # how to get the users desktop location 
def merge():
  global p
  p =subprocess.Popen('ffmpeg -i video.avi -i audio.wav -c copy -shortest output.mkv' ,stdin=subprocess.PIPE)


rec_btn = tk.Button(text='Start merging', width=20, command=merge)
rec_btn.pack()


root.mainloop()

【问题讨论】:

    标签: python-3.x ffmpeg path subprocess


    【解决方案1】:

    类似:

    ...  
    os.chdir(f'C://Users/{os.getlogin()}/desktop/') # how to get the users desktop  
    ...  
    

    应该可以。 os.getlogin() 获取当前登录用户的用户名,使用 f-string 将允许您将其插入路径名。

    如果你将它移动到一个 unix 系统,你会想要使用 pwd 模块来扩展它

    import pwd  
    
    # will return the login name of the user who ran script and root if run with sudo
    pwd.getpwuid(os.getuid())[0] 
    

    我想这里需要澄清一下。顾名思义,os.getlogin() 获取当前用户的登录名,因此在您的情况下,您可能能够像在 Windows 和 Unix 上那样运行它。

    pwd.getpwuid(os.getuid())[0] 获取 运行 脚本的用户,如果您想通过sudo 检查脚本是否由 root 运行,这将非常有用。

    注意:我认为 f-strings 是在 Python 3.6 中引入的,所以如果您使用的是早期版本的 python,那么您必须执行以下操作:

    username = os.getlogin()
    os.chdir('C://Users/%s/desktop/' % username )  
    

    【讨论】:

    • 你能告诉我如何隐藏 cmd 窗口吗?因为我不想向用户显示 cmd 窗口并在后台运行此进程。
    • 我对此不是 100% 确定,但我相信如果它在后台启动,它不会生成 cmd 窗口,但我不会将 Windows 用于 python 开发,如果我这样做它通常在 Docker 容器中。
    猜你喜欢
    • 2016-03-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多