iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >python3基础:目录操作
  • 183
分享到

python3基础:目录操作

操作基础目录 2023-01-31 06:01:47 183人浏览 薄情痞子

Python 官方文档:入门教程 => 点击学习

摘要

目录操作 os模块提供了统一的操作系统接口函数,python中对文件和文件夹的操作都要涉及到os和shutil模块,在使用前需要使用import引入,例如; import os import os.path import shutil  

目录操作

os模块提供了统一的操作系统接口函数,python中对文件和文件夹的操作都要涉及到os和shutil模块,在使用前需要使用import引入,例如;

import os

import os.path

import shutil

 

os.getcwd()

获取当前工作目录,即当前Python脚本工作的目录路径

>>> import os

>>> os.getcwd()

'F:\\'

 

os. chdir(path)

改变当前脚本工作目录,相当于linux下的cd命令

>>> os.getcwd()

'F:\\py3.6\\PPT'

>>> os.chdir('f:')#错误的写法,不会切换路径

>>> os.getcwd()

'F:\\py3.6\\PPT'

>>> os.chdir('f:\\')#盘符后面必须写上\\

>>> os.getcwd()

'F:\\'

>>> os.chdir('f:\\py3.6')#绝对路径

>>> os.getcwd()

'f:\\py3.6'

>>> os.chdir('test')#相对路径

>>> os.getcwd()

'f:\\test'

>>>

os.curdir

获取当前路径,也就是('.')

>>> os.curdir

'.'

​​​​​​​os.pardir

 返回当前目录的父目录('..')

>>> os.pardir

'..'

>>> os.chdir(os.pardir)

>>> os.getcwd()

'f:\\'

​​​​​​​os.name

获取当前使用的操作系统类型(其中 ‘nt’ 是 windows,’posix’ 是

linux 或者 unix)。

>>> os.name

'nt'

​​​​​​​os.mkdir(path [, mode=0777])

创建单级目录

>>> os.getcwd()

'f:\\'

>>> os.mkdir('20181014')

>>> os.mkdir('20181014')#再次创建抛异常

Traceback (most recent call last):

  File "<stdin>", line 1, in <module>

FileExistsError: [WinError 183] 当文件已存在时,无法创建该文件。: '20181014'

>>>

​​​​​​​s.makedirs(path [, mode=0777])

创建多级目录,父目录如果不存在,递归生成。生成的目录权限默认为777.如果重复创建会出错

>>> os.getcwd()

'f:\\'

>>> os.makedirs('11\\22\\33')

>>> os.makedirs('11\\22\\33')

Traceback (most recent call last):

  File "<stdin>", line 1, in <module>

  File "C:\Users\kongsh\AppData\Local\Programs\Python\python36\lib\os.py", line220, in makedirs

    mkdir(name, mode)

FileExistsError: [WinError 183] 当文件已存在时,无法创建该文件。: '11\\22\\33'

​​​​​​​os.removedirs(path)

删除多级目录,目录为空才能删除,递归到上一级为空才能删除,不为空的话没有任何影响

os.removedirs('11\\22\\33')

​​​​​​​os.rmdir(path)

删除单级目录,不为空无法删除,会报错

​​​​​​​os.listdir(path)

列出指定目录下的所有文件和子目录,包括隐藏文件或目录,并以列表形式返回。path不写的话默认为当前目录

>>> os.listdir('.')

['$RECYCLE.BIN','20181014' 'a.py', 'AutoTestLog.log', 'b.txt', 'bip32.txt', 'PBKDF.txt', '

pet-shop-tutorial', 'System Volume InfORMation', 'upload_file.exe', '区块链']

>>>

>>> os.listdir()#默认为当前python脚本目录

['$RECYCLE.BIN','20181014' 'a.py', 'AutoTestLog.log', 'b.txt', 'bip32.txt', 'PBKDF.txt', '

pet-shop-tutorial', 'System Volume Information', 'upload_file.exe', '区块链']

>>> os.listdir('F:\\20181014')

['11', 'Log.py']

​​​​​​​os.remove(filePath)

删除指定文件,并且只能删除文件

>>> os.chdir(r'F:\20181014')

>>> os.getcwd()

'F:\\20181014'

>>> os.listdir()

['11', 'a.txt', 'Log.py']

>>> os.remove('a.txt')

>>> os.listdir()

['11', 'Log.py']

>>> os.remove('11')#删除目录会抛出PermissionError异常

Traceback (most recent call last):

  File "<stdin>", line 1, in <module>

PermissionError: [WinError 5] 拒绝访问。: '11'

​​​​​​​os.rename(oldname, newname)

重命名文件/目录

>>> os.rename('b.txt','bbb.txt')

>>> os.listdir()

['$RECYCLE.BIN', '20181014', 'a.py', 'AutoTestLog.log', 'bbb.txt', 'bip32.txt',

'PBKDF.txt', 'pet-shop-tutorial', 'System Volume Information', 'upload_file.exe'

, '区块链']

​​​​​​​os.stat(path)

获取文件信息,比如文件大小/创建时间/修改时间等等

>>> os.stat('bbb.txt')

os.stat_result(st_mode=33206, st_ino=1407374883603027, st_dev=2862993929, st

nk=1, st_uid=0, st_gid=0, st_size=9, st_atime=1539497709, st_mtime=153949770

t_ctime=1532852412)

>>> os.stat('bbb.txt').st_mtime #用.来取对应的键

1539497709.5655668

​​​​​​​os.utime(path[, (atime, mtime)])

修改文件的时间属性,设置文件的access and modified time

>>> os.stat('bbb.txt')

os.stat_result(st_mode=33206, st_ino=1407374883603027, st_dev=2862993929, st

nk=1, st_uid=0, st_gid=0, st_size=9, st_atime=1539497709, st_mtime=153949770

t_ctime=1532852412)

>>> os.utime(r'bbb.txt',(1375448978,1369735977))

>>> os.stat('bbb.txt')

os.stat_result(st_mode=33206, st_ino=1407374883603027, st_dev=2862993929, st

nk=1, st_uid=0, st_gid=0, st_size=9, st_atime=1375448978, st_mtime=136973597

t_ctime=1532852412)

 

>>> import os .path
>>> os.path.isdir("subprocesstest")
True
>>> os.path.isfile("subprocesstest")
False

​​​​​​​os.system (command)

运行shell命令

window下:

>>> os.system('dir')

 

linux下:

>>> import os

>>> os.system('ls')

 

 

​​​​​​​os.sep

输出操作系统的特定的路径分隔符。 Win下为“\”,Linux下为“/”

>>> os.sep

'\\'

​​​​​​​os.linesep

输出当前平台使用的行终止符,win 下为“\r\n”,Linux下为“\n”,Mac使用 '\r'。

>>> os.linesep#linux默认是'\n'

'\r\n'​​​​​​​

os.pathsep

输出用于分割文件路径的字符串

>>> os.pathsep

';'​​​​​​​

os.environ()

获取系统环境变量,返回的是字典

>>> os.environ['os']#通过指定键的方式查看对应的值

'Windows_NT'

 

​​​​​​​os.poen()

运行一个shell命令打开一个管道,并且返回一个文件对象。然后通过操作文件的方式去操作这个返回值即可

语法:os.popen(command[, mode[, bufsize]])

参数:

command -- 使用的命令。

mode -- 模式权限可以是 'r'(默认) 或 'w'。

bufsize -- 指明了文件需要的缓冲大小:0意味着无缓冲;1意味着行缓冲;其它正值表示使用参数大小的缓冲(大概值,以字节为单位)。负的bufsize意味着使用系统的默认值,一般来说,对于tty设备,它是行缓冲;对于其它文件,它是全缓冲。如果没有改参数,使用系统的默认值。

返回值:

返回一个文件描述符号为fd的打开的文件对象

windows:

>>> for i in os.popen('dir'):

...     print(i)

...

linnux:

>>> import os

>>> for i in os.popen('ls'):

...     print(i)

...

a.py

 

b.py

 

 

​​​​​​​os.walk(top, topdown=True, οnerrοr=None, followlinks=False)

参数说明:

➢top:需要遍历的目录树的路径。

➢topdown的默认值是“True”,表示先返回目录树下的文件,然后遍历目录树下的子目录。设为False时,表示先遍历目录树下的子目录,返回子目录下的文件,最后返回根目录下的文件。

➢onerror的默认值是“None”,表示忽略文件遍历时产生的错误。如果不为空,则提供一个自定义函数提示错误信息后继续遍历或抛出异常中止遍历。

➢返回一个列表,列表中的每一个元素都是一个元组,该元组有3个元素,分别表示每次遍历的路径名目录列表文件列表

➢默认情况下os.walk 不会遍历软链接指向的子目录,若有需要请将followlinks设定为true(软连接:类似与window的快捷方式)

代码示例:遍历指定文件夹下所有的文件和目录

#encoding=utf-8
import os

dir_count=0
file_count=0
for root, dirs, files in os.walk("e:\\testdemo",topdown=False) :
    print(u"当前目录:",root) #打印目录绝对路径
    for name in files :
        print(u'文件名:',os.path.join(root,name) )#打印文件绝对路径
        file_count+=1
    for name in dirs :
        print(u'目录名:',name) #打印目录绝对路径
        dir_count+=1

print ("目录个数%s" %dir_count)
print ("文件个数%s" %file_count)

​​​​​​​os.path.abspath(path)

返回规范化的绝对路径名,根据当前工作目录路径连接该文件名后所组成的新的路径名,但这个路径不一定是真实存在的路径

>>> os.path.abspath('a.txt')

'f:\\a.txt'

​​​​​​​os.path.join((a, *p)

连接两个或更多的路径名拼接成绝对路径,中间以“\”分隔,如果所给的参数中都是绝对路径名,那先给的绝对路径将会被丢弃。

>>> import os.path
>>> os.path.join("e:\\test","a.txt")
'e:\\test\\a.txt'
>>> os.path.join("test","a.txt")
'test\\a.txt'
>>> os.path.join("e:\\test","e:\\a.txt")
'e:\\a.txt'
>>> os.path.join(r"e:\test",r"e:\a.txt")
'e:\\a.txt'

​​​​​​​os.path.split(path)

将path分割成目录和文件名,如果给的path本身就是目录的话,也会将最后一个目录作为文件名而分离,同时它不会判断文件或目录是否存在,以元组返回

>>> os.path.split('f:\\a.txt')

('f:\\', 'a.txt')

>>> os.path.split('f:\\test\\a.txt')

('f:\\test', 'a.txt')

>>> os.path.split('f:\\test')#将目录作为文件名分割

('f:\\', 'test')

​​​​​​​os.path.dirname(path)

返回path的目录路径,就是os.path.split(path)的第一个元素。

>>> os.path.dirname('f:\\test\\a.txt')

'f:\\test'

​​​​​​​os.path.basename(path)

返回path最后的文件名。如果path以/或\结尾,就会返回空值。即os.path.split(path)的第二个元素

>>> os.path.basename('f:\\test\\a.txt')

'a.txt'

​​​​​​​os.path.splitext(path)

分离文件名与扩展名

>>> os.path.splitext('f:\\test\\a.txt')

('f:\\test\\a', '.txt')

​​​​​​​os.path.splitdrive(path)

拆分驱动器和文件路径,并以元组返回结果;主要针对win有效,Linux元组第一个总是空。

>>> os.path.splitdrive('c:\\a.py')

('c:', '\\a.py')

>>> os.path.splitdrive('a.py')

('', 'a.py')

>>>

​​​​​​​os.path.exists(path)

判断path是否存在,如果存在返回True,否则返回False。比如新建文件的时候可以使用

>>> os.path.exists('c:\\a.py')

False

>>> os.path.exists('f:\\a.py')

True

​​​​​​​os.path.isabs(path)

判断path是否是绝对路径,如果是返回True,否则返回False。

>>> os.path.isabs('c:\\aaaaaaaaaa.txt')

True

>>> os.path.isabs('aaaaaaaaaa.txt')

False

​​​​​​​os.path.isfile(path)

判断path是否是文件,如果是返回True,否则返回False。必须是真实存在的文件

>>> os.path.isfile(r'd:\gloryroad\a.py')

False

>>> os.path.isfile(r'f:\\a.py')

True

​​​​​​​os.path.isdir(path)

判断path是否是目录,如果是目录返回True,否则返回False。必须是真实存在的目录

>>> os.path.isdir(r"F:\20181014\11")

True

>>> os.path.isdir(r"F:\20181014\22")#目录不存在

False

>>> os.path.isdir(r"F:\20181014\Log.py")#指定的是文件

False

​​​​​​​os.path.normpath(path)

将path转换成规范的文件路径

>>> os.path.normpath('c:/test/a.py')

'c:\\test\\a.py'

​​​​​​​os.path.getsize(name)

获得文件大小,如果name是目录返回结果是0L或者4096L;如果name代表的目录或文件不存在,会报WindowsError异常。

>>> os.path.getsize(r'f:\\a.py')

44

>>> os.path.getsize(r'f:')

4096

​​​​​​​os.path.getatime(filename)

返回文件的最后访问时间,返回的是时间戳。


import os

import time

#获取文件最后访问时间

lastTime = os.path.getatime("test12.py")

print(lastTime)

#将时间戳转成时间元组

formatTime = time.localtime(lastTime)

print(formatTime)

#格式化时间元组为时间字符串

print(time.strftime("%Y-%m-%d %H:%M:%S",formatTime))

​​​​​​​os.path.getctime(filename)

以时间戳的形式返回文件或目录的创建时间,在Unix系统上是文件最近更改的时间,在Windows上是文件或目录的创建时间。


import os

import time

#获取文件创建时间

lastTime = os.path.getctime("test12.py")

print(lastTime)

#将时间戳转成时间元组

formatTime = time.localtime(lastTime)

print(formatTime)

#格式化时间元组为时间字符串

print(time.strftime("%Y-%m-%d %H:%M:%S",formatTime))

​​​​​​​os.path.getmtime(filename)

以时间戳的形式返回文件或目录的最后存取时间


import os

import time

#获取文件创建时间

lastTime = os.path.getmtime("test12.py")

print(lastTime)

#将时间戳转成时间元组

formatTime = time.localtime(lastTime)

print(formatTime)

#格式化时间元组为时间字符串

print(time.strftime("%Y-%m-%d %H:%M:%S",formatTime))

​​​​​​​sys模块的命令行参数

sys.argv:交互模式下传入的命令行参数,第0个是文件名。将自己的程序发布给别人使用时,无需打开文件,直接从命令行参数输入数据,简单方便。

以下代码需在命令行下执行

代码示例1:对命令行输入的两个数字求和


#coding=utf-8

import os,time,sys

print(sys.argv)

def add(a,b):

      return a+b

if len(sys.argv)!=3:

      print('参数数量不对!')

      sys.exit()

try:

      float(sys.argv[1])

      float(sys.argv[2])

except:

      print('参数类型不对!请指定两个数字')

print(add(float(sys.argv[1]),float(sys.argv[2])))

代码示例2:对命令行输入的不同参数进行不同的处理


#coding=utf-8
import os,sys

def readfile(filename):
    '''Print a file to the standard output.'''
    f = open(filename)
    while True:
          line = f.readline()
          if len(line) == 0:
             break
          print (line,)
    f.close()
if len(sys.argv) ==2 and sys.argv[1].startswith('--'):
    pass
elif  len(sys.argv) <3:
   print ('No action specified.')
   sys.exit()

for id,i in enumerate(sys.argv):
    print ("第%s个参数:%s" %(id,i))

if sys.argv[1].startswith('--'):
    option = sys.argv[1][2:]
    # fetch sys.argv[1] but without the first two characters
    if option == 'version':
        print('Version 1.2')
    elif option == 'help':
        print('''"
           This program prints files to the standard output.
           Any number of files can be specified.
           Options include:
           --version : Prints the version number
           --help    : Display this help''')
    else:
        print('Unknown option.')
        sys.exit()
else:
    for filename in sys.argv[1:]:
        readfile(filename)

shutil模块

shutil模块可以方便的移动/复制/删除目录及文件。使用前需要导入import shutil

复制文件/文件夹

shutil.copyfile( src, dst) #src复制到dst中去。当然前提是目标地址是具备可写权限。抛出的异常信息为 IOException. 如果当前的dst已存在的话就会被覆盖掉 shutil.move( src, dst) #移动文件或重命名

shutil.copy( src, dst) 复制一个文件到一个文件或一个目录 shutil.copy("d:\\a.py","d:\\yy.py")

shutil.copy2( src, dst) #在copy上的基础上再复制文件最后访问时间与修改时间也复制过来了,类似于cp –p的东西

shutil.copytree( olddir, newdir, True/Flase)

#把olddir拷贝一份newdir,olddir和newdir都只能是目录,且newdir 必须不存在。如果第3个参数是True,则复制目录时将保持文件夹下的符号连接,如果第3个参数是False,则将在复制的目录下生成物理副本来替代符

 

移动文件(目录)

shutil.move("oldpos","newpos")   

shutil.move("d:\\aaa","d:\\DDD")

shutil.copytree( olddir, newdir, True/False) #把olddir拷贝一份newdir,如果第3个参数是True,则复制目录时将保持文件夹 下的符号连接,如果第3个参数是False,则将在复制的目录下生成物理副本来 替代符号连接

#shutil.rmtree( src ) 递归删除一个目录以及目录内的所有内容,并且删除后不能恢复

--结束END--

本文标题: python3基础:目录操作

本文链接: https://www.lsjlt.com/news/189371.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • python3基础:目录操作
    目录操作 os模块提供了统一的操作系统接口函数,python中对文件和文件夹的操作都要涉及到os和shutil模块,在使用前需要使用import引入,例如; import os import os.path import shutil  ...
    99+
    2023-01-31
    操作 基础 目录
  • Python3目录操作
    Python3 目录操作 常见的目录操作: 显示当前目录 切换目录 新建、删除目录、移动、复制 显示目录内容 判断目录、文件是否存在 目录操作常用的函数如下: os.listdir() # 列出目录下的内容 os.getcw...
    99+
    2023-01-31
    操作 目录
  • python3基础:文件操作
    相对路径和绝对路径 相对路径:顾名思义就是相对于当前文件的路径。网页中一般表示路径使用这个方法。 绝对路径:绝对路径就是主页上的文件或目录在硬盘上真正的路径。 比如 c:/apache/cgi-bin 下的,那么 c:/apach...
    99+
    2023-01-31
    操作 文件 基础
  • python3编程基础:操作excel(
    目录 前言 安装模块 例1:创建一个excel 文件,并写入不同类的内容 例2:写入时间 例3:创建sheet 例4 :操作单元格 例5 :操作行/列/指定区域 例6:显示小数 例7:获取所有的行对象 例8:获取所有的列对象 例9:单元格...
    99+
    2023-01-31
    操作 基础 excel
  • Java基础之文件和目录操作
    目录一、前言二、构造方法三、文件元数据四、文件操作五、目录操作六、总结一、前言 文件和目录操作最终是与操作系统和文件系统相关的,不同系统的 实现是不一样的,但Java中的java.i...
    99+
    2024-04-02
  • Python3基础-Python作用域详
    转载文章 作者:骏马金龙 出处:http://www.cnblogs.com/f-ck-need-u/p/9925021.html 作用域是指变量的生效范围,例如本地变量、全局变量描述的就是不同的生效范围。 python的变量作用域的...
    99+
    2023-01-30
    作用 基础 Python
  • Python3基础
    一、Python3语法基础 1、Python3编码 默认情况下,Python 源码文件以 UTF-8 编码,所有字符串都是 unicode 字符串,可以为Python源码文件指定不同的编码,如下: # -*- coding: ut...
    99+
    2023-01-31
    基础
  • Python基础--Python3基础语
    Python3 基础语法编码默认情况下,Python3源码文件以UTF-8编码,所有字符串都是Unicode字符串。当然也可以为源码文件指定不同的编码,例如:# -*- coding: cp-1252 -*-标识符1.第一个字符必须是字母表...
    99+
    2023-01-31
    基础 Python
  • 【Python3】HTML基础
    一、BS模式 BS(Browser-Server)模式:顾名思义为浏览器-服务器的意思,对比的话类似我们PC上面浏览器使用的产品即为BS模式产品,例如google doc、各类网站等。 服务端开启一个socke进程 #!/usr/bin...
    99+
    2023-01-31
    基础 HTML
  • python基础操作---string
    1 #coding:utf-8 2 3 var1 = 'Hello World!' 4 5 print var1[::] 6 print len(var1) 7 print var1[0:len(var1)] 8 p...
    99+
    2023-01-31
    操作 基础 python
  • 【PG】PG基础操作
    mark笔记 1 登录 [postgres@hostnfsd ~]$ psql     --默认登录用户是当前系统用户,并默认登录和当前系...
    99+
    2024-04-02
  • Python-selenium基础操作
    一. selinum优势页面级测试,模拟用户真实操作强大library,支持页面元素各类操作多浏览器支持(chrome,firefox,ie)多语言支持(python,java,C#,php,ruby)二. 需要安装软件firefox  f...
    99+
    2023-01-31
    操作 基础 Python
  • python基础操作---tuple
    1 #coding:utf-8 2 3 tup1 = ('physics', 'chemistry', 1997, 2000); 4 tup2 = (1, 2, 3, 4, 5 ); 5 tup3 = "a", "b", "...
    99+
    2023-01-31
    操作 基础 python
  • Python 目录操作
    在Python中,文件操作主要来自os模块,主要方法如下:os.listdir(dirname):列出dirname下的目录和文件os.getcwd():获得当前工作目录os.curdir:返回当前目录('.')os.chdir(dirna...
    99+
    2023-01-31
    操作 目录 Python
  • Python3 文件(夹)基本操作
    相关模块 os os.path shutil pathlib(New in version 3.4) 基本操作 判断文件(夹)是否存在。 os.path.exists(pathname) # new pathlib.Path(pat...
    99+
    2023-01-31
    操作 文件
  • python3 csv文件基本操作
    csv(Comma-Separated Values),也叫逗号分割值,如果你安装了excel,默认会用excel打开csv文件。 废话少说直接贴代码: import csv # 打开文件,用with打开可以不用去特意关闭file了,p...
    99+
    2023-01-31
    操作 文件 csv
  • python3 基础语法
    python相关文章请移步简书:http://www.jianshu.com/u/a72d0d3b2176 ...
    99+
    2023-01-31
    语法 基础
  • GolangDefer基础操作详解
    目录defer的执行顺序defer与return谁先谁后函数的返回值初始化有名函数返回值遇见defer情况defer遇见panicdefer中包含panicdefer下的函数参数包含...
    99+
    2024-04-02
  • python3------基础语法
    1 注释 1.1 以#号开头的注释(单行注释) 1.2 以""" 注释内容 """ (多行注释) 1.3 以 ''' 注释内容''' (多行注释)2 行与缩进   python代码块通过缩进对齐表达代码逻辑而不是使用大括号;   缩进表达一...
    99+
    2023-01-31
    语法 基础
  • python3基础知识
    字符串截取:利用下标进行截取py_str = 'python'len(py_str)py_str[:3] py_str + '123''python123'py_str * 3'pythonpythonpython' Str将数...
    99+
    2023-01-31
    基础知识
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作