как узнать местоположение рабочего стола пользователя - PullRequest
1 голос
/ 15 марта 2020

Я делаю 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()

1 Ответ

1 голос
/ 15 марта 2020

Что-то вроде:

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

должно работать. os.getlogin () получает имя пользователя текущего вошедшего в систему пользователя и, используя f-строку, позволит вам вставить его в путь.

Чтобы немного углубиться в это, если вы когда-нибудь перенесете это в систему 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-строки были введены в Python 3.6. Я так думаю, если вы используете более раннюю версию python, вам придется сделать что-то вроде:

username = os.getlogin()
os.chdir('C://Users/%s/desktop/' % username )  
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...