Je veux pouvoir passer dans un fichier Filpath à ma fonction Python en tant que paramètre. Pour pouvoir rendre mon code fiable, si un autre devait devait exécuter mon code sur leur machine, le chemin de fichier changerait en fonction du nom de l'utilisateur. Comment puis-je modifier ce changement de manière dynamique dans Python.
Par exemple, ma fonction prend les arguments suivants: p> Je veux pouvoir modifier ce chemin de fichier de manière dynamique en changeant de manière dynamique. mon nom 'JAME' au nom de l'utilisateur actuel. P> p>
5 Réponses :
Obtenez le répertoire de travail actuel comme
Si tous les chemins souhaités sont sous la forme
/ users / user_1 / de bureau / code de données / testdata p> li>
/ user / user_2 / bureau / code de données / testdata p> li>
/ user / user_3 / bureau / code de données / testdata p> li> ul>
Nous pouvons donc définir la fonction suivante qui fera le travail: p> Cette fonction accepte une chaîne Nom d'utilisateur en tant que paramètre d'entrée et prend soin de retourner la chemin d'intérêt souhaité. P> faire FOOD foo ("robert") code> entraînera / users / robert / user / user / Code de données / TestDATA CODE> P> FOO ("DAVID") CODE> aboutira à / users / david / code de bureau / code de données / testdata Code> p> p>
Vous pouvez utiliser PATHLIB pour obtenir votre dossier à domicile et construire le chemin avec celui-ci: ou, si vous souhaitez remplacer le début de votre utilisateur avec le chemin de l'utilisateur droit avec quelque chose comme " Traducteur ": p> Il devrait fonctionner sur presque n'importe quel système d'exploitation. p> p>
Utiliser OS code> module: user_home_dir = os.path.expanduser('~')
user = os.path.split(user_home_dir)[-1]
os.path.join('/Users', user, 'Desktop/data-code/Testdata')
#/Users\\User_1\\Desktop/data-code/Testdata'
J'ai fait ce qui suit:
def get_json_location(username=os.getlogin()):
first = "/Users/"
last = "/Desktop/data-code/Testdata"
result = first + username + last
return result
Stackoverflow.com/ Questions / 4028904 / ...
Donc, vos chemins sont quelque chose comme "/ users / user_1 / bureaux / code de données / testdata", "/ utilisateurs / user_2 / de bureau / code de données / testdata", "/ utilisateurs / user_3 / bureau / code de données / testdata" ? Cela signifie que seul le nom d'utilisateur change et tout le reste reste le même?
Oui correct @lossofhumanIdentity
Cette question n'est vraiment pas un double de toute question que j'ai examinée à travers @georgy
La partie " Code de bureau / code de données / TestData i>" qui vient après le chemin de la maison de l'utilisateur, ne le rend pas moins en double.