在python中传递动态文件路径

时间:2019-01-15 10:35:54

标签: python python-2.7 filepath

我希望能够将文件路径作为参数传递给我的python函数。为了使我的代码可靠,如果任何其他开发人员要在他们的计算机上运行我的代码,则文件路径将根据用户名更改。我如何在python中动态进行此更改。

例如,我的函数采用以下参数:

def f_path(path):

my path will be : /Users/jame/Desktop/data-code/Testdata

我希望能够通过将我的名字“ jame”更改为当前用户的名字来动态地更改此文件路径。

5 个答案:

答案 0 :(得分:0)

获取当前工作目录为

import os
current_directory = os.getcwd()

答案 1 :(得分:0)

如果所有所需路径均采用

格式
  • / 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

答案 2 :(得分:0)

您可以使用pathlib来获取您的主文件夹并使用它构建路径:

from pathlib import Path

# home would contain something like "/Users/jame"
home = str(Path.home())

path = home + "/Desktop/data-code/Testdata"

或者,如果您想用“翻译器”之类的内容将正确的用户路径替换为用户的路径开头:

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)

它几乎可以在所有操作系统上工作。

答案 3 :(得分:0)

使用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'

答案 4 :(得分:0)

我已经完成以下操作:

def get_json_location(username=os.getlogin()):
    first = "/Users/"
    last = "/Desktop/data-code/Testdata"
    result = first + username + last
    return result