Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/reporting-services/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x 如何将动态变量传递到要检查的操作系统路径_Python 3.x - Fatal编程技术网

Python 3.x 如何将动态变量传递到要检查的操作系统路径

Python 3.x 如何将动态变量传递到要检查的操作系统路径,python-3.x,Python 3.x,我试图写一些检查,检查一些目录的所有权和权限。 这里我需要创建目录,如果它们不存在的话。但是路径需要是动态的。 例如,在/local/backup/DBNAME中,DBNAME是由用户输入定义的变量。 因此,如果用户将DBNAME提供为ORACLE_DB1,我们将检查: if (os.path.isdir("/local/backup/ORACLE_DB1/log")): print('log directory exists') 此外,“local”还需要是另一个依赖于服务器类型的动

我试图写一些检查,检查一些目录的所有权和权限。 这里我需要创建目录,如果它们不存在的话。但是路径需要是动态的。 例如,在/local/backup/DBNAME中,DBNAME是由用户输入定义的变量。 因此,如果用户将DBNAME提供为ORACLE_DB1,我们将检查:

if (os.path.isdir("/local/backup/ORACLE_DB1/log")):
    print('log directory exists')
此外,“local”还需要是另一个依赖于服务器类型的动态变量。
例如,如果服务器类型为-1,则它是“/local/backup/DBNAME”,如果服务器类型为-2,则它是“/share/backup/DBNAME”。

您可以使用
os.path.join()组合路径,如下所示:

server_path = 'local' if....
db_name = <get the database name from wherever you get it>
filepath = os.path.join(server_path, 'backup', db_name, 'log')
server\u path='local'如果。。。。
数据库名称=
filepath=os.path.join(服务器路径,'backup',数据库名称,'log')

然后,您可以检查路径是否存在,并在需要时创建它。

我可以在os.system中使用类似的方法来运行任何命令吗?比如,如果目录不存在,那么os.system(“mkdir-p/$1/backup/$2/log”),其中$1是本地或共享,而$2是数据库名。您似乎在寻找格式字符串。在Python中有多种方法可以实现这一点:
f“mkdir-p/{local}/backup/{dbname}/log”
(注意第一个引号前的f)将引用Python变量local和dbname,并且只在Python 3.6+中工作,
“mkdir-p/{}/backup/{}/log”。format(local,dbname)
“mkdir-p/%s/backup/%s/log%”(local,dbname)
甚至丑陋的
mkdir-p/“+log+”/backup/“+dbname+”/log”
都要小心,因为如果您可以指定像
这样的dbname,那么滥用它们是微不足道的;echo xxxx>>/etc/passwd#