python 工作路径,谈一谈python进程的工作路径

谈一谈python进程的工作路径

本文主要分析python进程的工作路径如何获取,如何修改,如何指定子进程的工作路径。

1. 如何获取python进程的工作路径

我在/root/web目录下编写一个test.py文件,内容如下

import os

print(os.getcwd())

执行python test.py 命令运行程序,输出结果为

/root/web

os.getcwd方法返回进程的工作路径,看上去,python脚本在哪个目录,工作路径就是那个目录,实际情况,进程的工作路径取决于在哪里运行它。

如果我是在/root目录里运行脚本,那么需要执行命令python web/test.py,os.getcwd()返回的就是/root。

2. 进程自己可以修改工作目录

python的os.chdir方法可以修改自身进程的工作路径

import os

print(os.getcwd()) # /root/web

os.chdir("/root/www")

print(os.getcwd()) # /root/www

chdir方法改变了进程的工作路径。

3. 工作路径的作用

了解进程的工作路径有什么用呢?进程的工作路径主要影响到程序里所使用的相对路径。

修改test.py文件

import os

print(os.getcwd())

open('1.txt', 'w').close() # 创建一个文件

在这段代码里,我创建了一个1.tx文件,我使用的是相对路径,这里就是相对进程的工作路径。

如果是在/root/web目录下执行Python test.py,那么就会在/root/web目录下新建1.txt。

如果我在/root目录下执行python web/test.py,就会在/root目录下新建1.txt。

4. 设置子进程的工作目录

如果程序里使用了相对路径,那么就要考虑进程的工作路径如何设置。

如果你在python进程里使用subprocess.Popen去执行另一个脚本,而那个脚本里使用了相对路径,你就需要考虑为子进程设置合理的工作路径。

编写脚本test2.py

import subprocess

p = subprocess.Popen('python /root/web/test.py', shell=True, cwd='/root/web')

retcode = p.wait()

print(retcode)

我在 /root目录下执行python web/test2.py,test2.py的工作路径是/root,启动的子进程test.py会继承父进程的工作路径。

但是我设置了cwd参数,设置了子进程的工作路径为/root/web,恰好是test.py脚本所在的目录,如果使用了相对路径,也不会出现意外了。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值