http://blog.csdn.net/pipisorry/article/details/52454486

一般的操作系统服务之OS模块Generic Operating System Services

os模块

模块包含普遍的操作系统功能。利用这个模块可以写出与平台无关的程序,比如就是使用os.sep可以取代操作系统特定的路径分割符。

os模块包含

Tasks    Tools
    Shell variables    os.environ
    Running programs    os.system, os.popen, os.execv, os.spawnv
    Spawning processes    os.fork, os.pipe, os.waitpid, os.kill
    Descriptor files, locks    os.open, os.read, os.write
    File processing    os.remove, os.rename, os.mkfifo, os.mkdir, os.rmdir
    Administrative tools    os.getcwd, os.chdir, os.chmod, os.getpid, os.listdir, os.access
    Portability tools    os.sep, os.pathsep, os.curdir, os.path.split, os.path.join
    Pathname tools    os.path.exists('path'), os.path.isdir('path'), os.path.getsize('path')

[

  • 16.1.1. File Names, Command Line Arguments, and Environment Variables
  • 16.1.2. Process Parameters
  • 16.1.3. File Object Creation
  • 16.1.4. File Descriptor Operations
    • 16.1.4.1. Querying the size of a terminal
    • 16.1.4.2. Inheritance of File Descriptors
  • 16.1.5. Files and Directories
    • 16.1.5.1. Linux extended attributes
  • 16.1.6. Process Management
  • 16.1.7. Interface to the scheduler
  • 16.1.8. Miscellaneous System Information
  • 16.1.9. Miscellaneous Functions

]

os模块常用的方法

1.os.sep                    可以取代操作系统特定的路径分割符
2.os.name                 字符串指示你正在使用的平台。比如对于Windows,它是'nt',而对于Linux/Unix用户,它是'posix'
3.os.getenv()             用来读取环境变量

6.os.putenv()             用来设置环境变量 。推荐用os.environ,因为使用os.putenv()并不会真正改变os.environ字典里面的环境变量,即某些平台无效,但是使用os.environ有一个潜在的隐患:在一些平台上,包括FreeBSD和Mac OS X,修改environ会导致内存泄露。

os.environ['环境变量名称']='环境变量值' #其中key和value均为string类型

os.putenv('环境变量名称', '环境变量值')

8.os.remove()             函数用来删除一个文件
9.os.system()             函数用来运行shell命令 [python中调用命令行命令]
10.os.linesep               字符串给出当前平台使用的行终止符。例如,Windows使用'/r/n',Linux使用'/n'而Mac使用'/r'。

11. os.access   os.chmod

判断并修改文件读写权限

try:

if not os.access(src, os.W_OK):

os.chmod(src,0664)

except:

print'Error: you can not chang %s\'s mode.'%src
12 os.getlogin()
        python如何获取当前shell、终端的用户名。os.getlogin() returns the name of the "user logged in on the controlling terminal of the process."能获取当前桌面登录的用户名;用户登录服务器的用户名;nologin如在pycharm中直接执行的可能会报错:OSError: [Errno 25] Inappropriate ioctl for device或者返回'_reportmemoryexception'。

最好是这样取得用户名:pwd.getpwuid(os.geteuid()).pw_name 或者 pwd.getpwuid( os.getuid() )[ 0 ]

其它方式:os.environ.get('USERNAME') or os.environ.get('USER'),但是有问题,it's not going to be safe because environment variables can be changed.

[Is there a portable way to get the current username in Python?]

13 os.rename() 重命名
python批量重命名文件

filedir = r'E:\mine\python_workspace\LDA\input\100Reviews_origin\Electronics/'
for basename in listdir(filedir):rename(join(filedir, basename), join(filedir, basename.split('.')[0]))

[批量重命名文件——python实现]

[python脚本:批量重命名文件名]

os目录和文件操作方法和os.path方法

[python文件、目录及路径操作]

[Python文件输入输出]
皮皮blog

OS系统模块的应用

获得Python脚本所在目录的位置

os.getcwd()

如果是要获得程序运行的当前目录所在位置,那么可以使用os模块的os.getcwd()函数。

sys.path[0]和sys.argv[0]

如果是要获得当前执行的脚本的所在目录位置,那么需要使用sys模块的sys.path[0]变量或者sys.argv[0]来获得。实际上sys.path是Python会去寻找模块的搜索路径列表,sys.path[0]和sys.argv[0]是一回事,因为Python会自动把sys.argv[0]加入sys.path。
具体来说,如果你在C:\test目录下执行python getpath\getpath.py,那么os.getcwd()会输出“C:\test”,sys.path[0]会输出“C:\test\getpath”。
更特别地,如果你用py2exe模块把Python脚本编译为可执行文件,那么sys.path[0]的输出还会变化
如果把依赖库用默认的方式打包为zip文件,那么sys.path[0]会输出“C:\test\getpath\libarary.zip”;
如果在setup.py里面指定zipfile=None参数,依赖库就会被打包到exe文件里面,那么sys.path[0]会输出“C:\test\getpath\getpath.exe”。
正确的方法os.path.split(os.path.realpath(__file__))[0]
但以上这些其实都不是脚本文件所在目录的位置。
C:\test

----sub/

----sub_path.py

----getpath.py

getpath.py调用sub_path.py;我们在C:\test下执行getpath.py。

如果我们在sub_path.py里面使用sys.path[0],那么其实得到的是getpath.py所在的目录路径“C:\test”,因为Python虚拟机是从getpath.py开始执行的。

如果想得到sub_path.py的路径,那么得这样

1. os.path.split(os.path.realpath(__file__))[0],其中__file__虽然是所在.py文件的完整路径,但是这个变量有时候返回相对路径,有时候返回绝对路径,因此还要用os.path.realpath()函数来处理一下。os.path.realpath(__file__)输出是“C:\test\sub\sub_path.py”,而os.path.split(os.path.realpath(__file__))[0]输出才是“C:\test\sub”。

2. 神奇的 Python 内部变量 __file__ ,该变量被自动设置为代码所在的 Python 模块文件名。 `` os.path.dirname(__file__)`` 将会获取自身所在的文件。如果在windows下,它会智能地选择正确的后向斜杠”“进行连接,而不是前向斜杠”/”。

实例说明

1 os.getcwd()、sys.path[0] (sys.argv[0])和__file__的区别是这样的:

假设目录结构是:
 C:\test
----getpath
      ----path.py
      ---- sub
            ----sub_path.py

然后我们在C:\test下面执行python getpath/path.py,这时sub_path.py里面与各种用法对应的值其实是:
    os.getcwd() “C:\test”,取的是起始执行目录
    sys.path[0]或sys.argv[0] “C:\test\getpath”,取的是被初始执行的脚本的所在目录

os.path.split(os.path.realpath(__file__))[0] “C:\test\getpath\sub”,取的是__file__所在文件sub_path.py的所在目录

2

sys.path.append(os.path.join(os.path.split(os.path.realpath(__file__))[0], '../../..'))

3

patternFile = r'data/patterns.txt'
stopwordsFile = r'data/English_stopwords.txt'
pathname = os.path.split(os.path.realpath(__file__))[0]
patternFile = path.join(pathname, patternFile)

如果不是绝对路径的时候,相对路径可能打开文件失败,出错:FileNotFoundError: [Errno 2] No such file or directory: 'data/English_stopwords.txt'

原因是data/patterns.txt是相对当前.py文件的路径,而如果当前执行文件不是它,而是别的py文件调用这个函数,那么那个相对路径就是相对别的py文件而言的,就会找不到路径,所有最好使用上面代码的形式写相对路径,再用改成绝对路径。

[python/matplotlib 如何在默认目录下打开上一级目录的文件?]

文件执行路径、目录

pathname=os.path.dirname(sys.executable)

[python文件、目录及路径操作-获取当前python文件的路径]

[如何获得Python脚本所在目录的位置]

[在python下,获取当前执行主脚本的方法有两个:sys.argv[0]和file]

from: http://blog.csdn.net/pipisorry/article/details/52454486

ref: [16. Generic Operating System Services]

[16.1. os — Miscellaneous operating system interfaces]

操作系统服务:OS模块相关推荐

  1. python的文件操作、模块操作、os模块、time、datatime模块以及模块的制作

    Day12新手小白学python 第十二节 python的文件操作.模块操作.os模块.time.datatime模块以及模块的制作 目录 Day12新手小白学python 前言 一.文件打开关闭 二 ...

  2. 自学Python第九天- 模块、包、编码、文件操作、OS 模块、打包

    自学Python第九天- 模块.包.编码.文件操作.OS 模块.打包 模块 导入模块 程序入口 包 编码 文件操作 打开或创建文件 常用的文件打开模式 边读边写 文件对象的常用方法 读写 CSV Ex ...

  3. python bytes查找位置_Python进阶5---StringIO和BytesIO、路径操作、OS模块、shutil模块

    StringIO StringIO操作 BytesIO BytesIO操作 file-like对象 路径操作 路径操作模块 3.4版本之前:os.path模块 3.4版本开始 建议使用pathlib模 ...

  4. 2021-09-08 python基础知识学习:文件操作和os模块

    文章目录 1.文件操作(IO技术) (1)打开文件 (2)编码 (3)close()关闭文件流 (4)文本文件读取 (5)二进制文件的读写 (6)文件对象常用的方法和属性 (7)使用pickle序列化 ...

  5. Python之文件操作(含os模块)

    文件的读写操作: 关于文件的读写操作,我们不得不提到系统函数open()函数了. 在使用open()函数时,需要一个变量来接住它,这个变量就相当于一个将Pycharm和文件连接的管道,我们对文件的读写 ...

  6. python学习笔记Day4 面向对象编程,文件操作,os模块,代码调试

    一.traceback模块 错误日志可能用到 import tracebackwhile 1: # 捕获异常的顺序按照先父类后子类try:n1 = int(input('请输入一个被除数'))n2 = ...

  7. python 多级递归_Python文件目录和系统操作,os模块和os.path模块

    os模块 # 输出平台名称,windows是"nt",Unix是"posix". 1. os.name # 路径分隔符,如windows的'',linux的'/ ...

  8. python os模块打开文件_Python 文件操作之OS模块

    with open('filepath') as rename: for line in rename: ... with 命令下 不用使用close()函数关闭文件,打开的文件在with 代码块下有 ...

  9. Python(10)文件操作(IO 技术)、OS模块、递归

    文章目录 文件操作(IO 技术) 文本文件和二进制文件 文件操作相关模块概述 创建文件对象 open() 基本的文件写入操作 常用编码介绍 ASCII ISO8859-1 GB2312 GBK GB1 ...

  10. python创建文件os_Python之文件与目录操作(os、zipfile、tarfile、shutil)

    Python中可以用于对文件和目录进行操作的内置模块包括: 模块/函数名称功能描述 open()函数 文件读取或写入 os.path模块 文件路径操作 os模块 文件和目录简单操作 zipfile模块 ...

最新文章

  1. zabbix使用zabbix 数据库做数据分表
  2. web前端学习day_04:jQuery框架
  3. python安装cv2模块_pythonimportcv2importError:DLLloadfailed:找不到指定模块
  4. 3个可以写进简历的京东AI NLP项目实战,走完这五步就是Top算法工程师
  5. 详解Windows开机自动运行
  6. 汇编语言---键盘KeyCode值列表
  7. a标签 vue 动态点击_vue基础那点事
  8. VBA之六--EXCEL VBA两则
  9. 蓝桥杯 算法提高 日期计算
  10. re.sub对多处字符串进行替换
  11. 一个简单的nginx配置
  12. python2000个5除以84的余数_python中负数除法的求商和取余的问题
  13. 算法设计——电路布线问题(动态规划)
  14. windows ping不通虚拟机ip地址
  15. 利用jsPDF把图片转成pdf格式保存本地指定目录
  16. PhotoShop 保存 8 bit 位图(Bmp)的方法【记录备忘】
  17. thinkadmin开源框架获取添加信息的主键id
  18. 内网环境下的横向移动总结
  19. 登录失败:用户帐户限制。可能的原因包括不允许空密码登录时间限制或强制的策略限制。
  20. 从0到1:CTFer成长之路docker环境搭建

热门文章

  1. 把Vim改装成一个IDE编程环境
  2. SQL Server 中添加表注释
  3. 如何获取母版页上控件的值?
  4. C# WinForm开发系列 - Form/Window
  5. BZOJ 2431 [HAOI2009]逆序对数列 (dp)
  6. cogs 1811. [NOIP2014]螺旋矩阵
  7. OSGi运行环境下java反序列化问题的解决方式
  8. Java多线程:线程死锁
  9. .NET方向高级开发人员面试时应该事先考虑的问题
  10. WPF Rendering 2(硬件加速、软件加速)