在 python 中传递动态文件路径
Passing dynamic file path in python
我希望能够将文件路径作为参数传递给我的 python 函数。为了能够使我的代码可靠,如果任何其他开发人员在他们的机器上 运行 我的代码,文件路径将根据用户名更改。我如何在 python.
中动态地进行此更改
例如,我的函数采用以下参数:
def f_path(path):
my path will be : /Users/jame/Desktop/data-code/Testdata
我希望能够通过将我的名字 'jame' 更改为当前用户的名字来动态更改此文件路径。
获取当前工作目录为
import os
current_directory = os.getcwd()
如果所有需要的路径都是
/Users/USER_1/Desktop/data-code/Testdata
/Users/USER_2/Desktop/data-code/Testdata
/Users/USER_3/Desktop/data-code/Testdata
因此我们可以定义以下函数来完成这项工作:
def foo(username):
first = "/Users/"
last = "/Desktop/data-code/Testdata"
result = first + username + last
return result
此函数接受字符串用户名作为输入参数,并负责返回所需的感兴趣路径。
示例:
执行 foo("Robert")
将导致 /Users/Robert/Desktop/data-code/Testdata
执行 foo("David")
将导致 /Users/David/Desktop/data-code/Testdata
您可以使用 pathlib 获取主文件夹并用它构建路径:
from pathlib import Path
# home would contain something like "/Users/jame"
home = str(Path.home())
path = home + "/Desktop/data-code/Testdata"
或者,如果您想将用户路径的开头替换为正确的用户路径,例如 "translator":
from pathlib import Path
import re
def f_path(path):
"""
path: str full path, with user's home folder,
would be translated to current user's home folder,
for example, "/Users/jane/some/path" would be translated to
"/Users/tom/some/path", if current user is Tom.
"""
# current home folder
home = str(Path.home())
# creating regular expression like "^/Users/[^/]+", for later use:
path_reg = "^" + re.sub("[^/]+$", "", home) + "[^/]+"
# replacing old home path part to a new one
return re.sub(path_reg, home, path)
它应该适用于几乎所有 OS。
使用os
模块:
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'
我做了以下事情:
def get_json_location(username=os.getlogin()):
first = "/Users/"
last = "/Desktop/data-code/Testdata"
result = first + username + last
return result
我希望能够将文件路径作为参数传递给我的 python 函数。为了能够使我的代码可靠,如果任何其他开发人员在他们的机器上 运行 我的代码,文件路径将根据用户名更改。我如何在 python.
中动态地进行此更改例如,我的函数采用以下参数:
def f_path(path):
my path will be : /Users/jame/Desktop/data-code/Testdata
我希望能够通过将我的名字 'jame' 更改为当前用户的名字来动态更改此文件路径。
获取当前工作目录为
import os
current_directory = os.getcwd()
如果所有需要的路径都是
/Users/USER_1/Desktop/data-code/Testdata
/Users/USER_2/Desktop/data-code/Testdata
/Users/USER_3/Desktop/data-code/Testdata
因此我们可以定义以下函数来完成这项工作:
def foo(username):
first = "/Users/"
last = "/Desktop/data-code/Testdata"
result = first + username + last
return result
此函数接受字符串用户名作为输入参数,并负责返回所需的感兴趣路径。
示例:
执行 foo("Robert")
将导致 /Users/Robert/Desktop/data-code/Testdata
执行 foo("David")
将导致 /Users/David/Desktop/data-code/Testdata
您可以使用 pathlib 获取主文件夹并用它构建路径:
from pathlib import Path
# home would contain something like "/Users/jame"
home = str(Path.home())
path = home + "/Desktop/data-code/Testdata"
或者,如果您想将用户路径的开头替换为正确的用户路径,例如 "translator":
from pathlib import Path
import re
def f_path(path):
"""
path: str full path, with user's home folder,
would be translated to current user's home folder,
for example, "/Users/jane/some/path" would be translated to
"/Users/tom/some/path", if current user is Tom.
"""
# current home folder
home = str(Path.home())
# creating regular expression like "^/Users/[^/]+", for later use:
path_reg = "^" + re.sub("[^/]+$", "", home) + "[^/]+"
# replacing old home path part to a new one
return re.sub(path_reg, home, path)
它应该适用于几乎所有 OS。
使用os
模块:
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'
我做了以下事情:
def get_json_location(username=os.getlogin()):
first = "/Users/"
last = "/Desktop/data-code/Testdata"
result = first + username + last
return result