因此,我正在编写一个脚本来自动化我和我的队友所做的某些事情。我们有一个git repo,此脚本供所有成员使用。它的一部分经过硬编码,专门用作我的文件夹路径:C:/Users/jorge.padilla/etc...
我对python还是比较陌生,并且不熟悉所有不同的库。我基本上想将用户目录(即jorge.padilla)转换为未经硬编码的变量,该变量无需接受用户输入,因此脚本将搜索当前用户目录中的任何内容并将其替换。
下面是我正在编写的自动化脚本的一小段示例。
import os, sys
from pathlib import Path
from enum import Enum
#Global Variables
PRODUCTS_FOLDER = "Products"
APP_FOLDER = "App"
DEV_BUILD = "ionic cordova build android"
PROD_BUILD = "ionic cordova build android --release --prod"
class BuildConfig():
def __init__(self, start_path):
self.start_path = start_path
def getProductFolder(self):
return os.path.join(self.start_path, PRODUCTS_FOLDER)
class BuildTypeEnum(Enum):
PROD = 1
DEV = 2
def buildingApp(ConfigPath:BuildConfig, DEVvPROD:BuildTypeEnum):
path = ConfigPath.getProductFolder()
app_path = os.path.join(path, APP_FOLDER)
os.chdir(app_path)
if DEVvPROD == BuildTypeEnum.DEV:
os.system(DEV_BUILD)
elif DEVvPROD == BuildTypeEnum.PROD:
os.system(PROD_BUILD)
else:
print("Invalid input.")
return
if __name__ == "__main__":
root_start_path = "C:/Users/jorge.padilla/Documents/"
build = BuildConfig(root_start_path)
buildType = None
buildTypeInput = input("Is this a dev or production build? (d/p): ")
if (buildTypeInput.lower() == 'd'):
buildType = BuildTypeEnum.DEV
elif (buildTypeInput.lower() == 'p'):
buildType = BuildTypeEnum.PROD
else:
print("Please specify if this is a development or production build.")
return
我要这样做的主要变量是root_start_path
答案 0 :(得分:3)
您应该使用pathlib(您已导入但从未使用过?):
import pathlib
root_start_path = pathlib.Path.home() # WindowsPath('C:/Users/jorge.padilla')
它也可以跨平台工作,并且实际上是处理文件路径(IMO)的最佳方法
它甚至可以简化访问该路径中其他目录的语法:
root_start_path = pathlib.Path.home() / 'Documents' # WindowsPath('C:/Users/jorge.padilla/Documents')
答案 1 :(得分:2)
您也可以这样做:
from os.path import expanduser
home = expanduser("~")