使用python

时间:2019-10-16 19:45:46

标签: python python-3.x ionic-framework

因此,我正在编写一个脚本来自动化我和我的队友所做的某些事情。我们有一个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

2 个答案:

答案 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("~")