我正在制作一个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()
类似于:
...
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]
获取运行脚本的用户,如果您想检查脚本是否由root用户通过sudo
运行,这将非常有用。
注意:f-string是在Python 3.6中引入的。我认为,如果你使用的是早期版本的Python,那么你就必须执行以下操作:
username = os.getlogin()
os.chdir('C://Users/%s/desktop/' % username )