longgb246的博客

os/sys 模块 python操作文件路径

当前路径:

1
2
3
# -*- coding: utf-8 -*-
import sys, os
pwd = sys.path[0] # 获取当前执行脚本的位置

参数:

  • `file`:当前文件完整路径,包括文件名
  • os.path.dirname(file): 某个文件所在的目录路径
  • os.path.join(a, b, c,….): 路径构造 a/b/c
  • os.path.abspath(path): 将path从相对路径转成绝对路径
  • os.pardir: Linux下相当于”../“,上一级目录的标志
1
os.path.abspath(os.path.join(os.path.dirname(__file__), os.pardir, os.pardir))

搜索当前文件的前n

__file__ = r’D:\Lgb\ipc_inv_opt\src\com\xxx\pbs\analysis\test.py’
运行uppath(4)
定位到 r’D:\Lgb\ipc_inv_opt\src’
[analysis]-pbs-xxx-com-src

1
2
3
4
def uppath(n=1):
if n == 0:
return os.path.abspath(os.path.dirname(__file__))
return os.path.abspath(os.path.join(os.path.dirname(__file__), (os.pardir + os.sep) * (n - 1) + os.pardir))

1、判断文件夹存在

1
2
if os.path.exists(total_path) == False:
os.mkdir(total_path)

2、添加当前目录到 import 的路径中,当前目录需要有init

1
2
sys.path.append(os.path.dirname(__file__))
sys.path.append(os.path.dirname(os.path.dirname(__file__)))

os.listdir() # 列出dirname下的目录和文件
os.sep # 可以取代操作系统特定的路径分割符。
os.name # 字符串指示你正在使用的平台。比如对于Windows,它是’nt’,而对于Linux/Unix用户,它是’posix’。
os.getcwd() # 函数得到当前工作目录,即当前Python脚本工作的目录路径。
os.getenv()和os.putenv() # 函数分别用来读取和设置环境变量。
os.listdir() # 返回指定目录下的所有文件和目录名。
os.remove() # 函数用来删除一个文件。
os.system() # 函数用来运行shell命令。
os.linesep # 字符串给出当前平台使用的行终止符。例如,Windows使用’\r\n’,Linux使用’\n’而Mac使用’\r’。
os.curdir # 返回但前目录(’.’)
os.chdir(dirname) # 改变工作目录到dirname
os.path.isdir(name) # 判断name是不是一个目录,name不是目录就返回false
os.path.isfile(name) # 判断name是不是一个文件,不存在name也返回false
os.path.exists(name) # 判断是否存在文件或目录name
os.path.getsize(name) # 获得文件大小,如果name是目录返回0L
os.path.abspath(name) # 获得绝对路径
os.path.normpath(path) # 规范path字符串形式
os.path.split(name) # 分割文件名与目录(事实上,如果你完全使用目录,它也会将最后一个目录作为文件名而分离,同时它不会判断文件或目录是否存在)
os.path.splitext() # 分离文件名与扩展名
os.path.join(path,name) # 连接目录与文件名或目录
os.path.basename(path) # 返回文件名
os.path.dirname(path) # 返回文件路径

3、python读取文件

方法一、这种为一行一行去读

1
2
for line in open("foo.txt"):
print line,

方法二、这种为读取全部文件,然后在一行一行的去读

1
2
3
4
f = open("c:\\1.txt","r")
lines = f.readlines()#读取全部内容
for line in lines
print line

坚持原创技术分享,您的支持将鼓励我继续创作!