Python模块

每个模块都有一个名称,在模块中可以通过语句来找出模块的名称。前面说过,当一个模块被第一次导 入的时候,这个模块的主块将被运行。假如我们只想在程序本身被使用的时候运行主块,而在它被别的 模块输入的时候不运行主块,我们该怎么做呢?这可以通过模块的name属性完成。测试如下代码:

if __name__ == '__main__':
    print('当前代码被单独运行')
else:
    print('当前代码被导入运行')

每个Python模块都有它的name,如果它是'main',这说明这个模块被用户单独运行,我们可以进行相应 的恰当操作。运行结果如下:

当前代码被单独运行

创建你自己的模块是十分简单的,你一直在这样做!每个以.py结尾的文件都是一个模块。下面我们先创 建一个myModule.py的文件,内容如下:

def sayhi():
    print('Hi, this is mymodule speaking.')
    version = '0.1'

从上面的代码可以看到,它与我们普通的Python程序相比并没有什么特别之处。我们接下来将看看如何 在我们别的Python程序中使用这个模块。这个模块应该被放置在我们导入它的程序的同一个目录中,或 者在sys.path所列目录之一。测试代码如下:

import myModule 
myModule.sayhi()
print('Version', myModule.version)

运行结果如下:

Hi, this is newmodule speaking.
Version 0.1

文件目录操作

文件操作包含文件打开和关闭、读、写、重命名和删除,分别对应open、close、read、write几个方 法。新建fileHandler.py,用于测试和练习。

想要对一个文件进行操作,要先使用open方法获取文件的访问权限,该方法的完整定义如下:

open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, 
closefd=True, opener=None)

mode 参数可选值如下:

1、文件读取:

新建一个test.txt文件,文件内添加三行内容:

a

b

c

下面我们编写代码打开test.txt文件并读出其内容:

file = open('./test.txt','r')
print(file.read())file.close()

2、文件写入

添加如下测试代码:

filePath = './test.txt'
print('a模式写入.....')
def printContent(path):
     with open(path,'r') as f:
         print(f.read())
with open(filePath,'a') as f:
    f.write("追加内容\r\n")
    printContent(filePath)

上面的代码定义了一个printContent方法,接收一个传入的路径,然后打印文件的字符串内容。

1. 创建删除重命名

删除和重命名文件,使用os.remove和 os.rename方法。

os.remove() 方法用于删除指定路径的文件。如果指定的路径是一个目录,将抛出OSError。

remove()方法语法格式如下:

os.remove(path)#path:要删除的文件路径

os.rename() 方法用于命名文件或目录,从 src 到 dst,如果dst是一个存在的目录, 将抛出OSError。 rename()方法语法格式如下:

os.rename(src, dst)

src表示要修改的目录名,dst表示修改后的目录名。 上面两个方法示例如下:

import os
def removeTest():
    os.remove('./test.txt')
def renameTxt():
    os.rename('./test.txt','./abc.txt')

目录枚举

# -*- coding: UTF-8 -*-
import sys
import os
os.chdir('c://')
def listCurrentDirectory(path):
    files = os.listdir(path)
    for name in files:
        print(name)
        listCurrentDirectory('.')

上面的代码中,首先我们使用os.chdir方法,将程序上下文的当前路径指定到我们的测试目录上来。接着 定义了一个listCurrentDirectory方法,该方法接收一个指定的路径,循环打印出该路径下的子目录和文 件的名称。获取子目录和文件信息使用的是os.listdir方法。

def listDirectoryDetail(path):
    files = os.listdir(path)
    for name in files:
        pathName = os.path.join(path,name)
        print(os.stat(pathName).st_mode)   #inode 保护模式        
        print(os.stat(pathName).st_ino) #inode 节点号        
        print(os.stat(pathName).st_dev )   # inode 驻留的设备        
        print(os.stat(pathName).st_nlink)  #inode 的链接数        
        print(os.stat(pathName).st_uid   ) #所有者的用户ID        
        print(os.stat(pathName).st_gid   )#所有者的组ID       
        print(os.stat(pathName).st_size )#文件的大小,普通文件以字节为单位的大小;
包含等待某些特殊文件的数据       
        print(os.stat(pathName).st_atime )#文件最后访问时间       
        print(os.stat(pathName).st_mtime )#文件最后修改时间        
        print(os.stat(pathName).st_ctime )#由操作系统报告的"ctime"。在某些系统上
(如Unix)是最新的元数据更改的时间,在其它系统上(如Windows)是创建时间
listDirectoryDetail('.')

上面的代码中列举了os.stat方法可以枚举的信息

import stat
def listCurrentDirectoryMode(path):
    files = os.listdir(path)
    for name in files:
         pathName = os.path.join(path, name)
         mode = os.stat(pathName).st_mode         
        if stat.S_ISDIR(mode):
            # 如果是目录            
            print('%s是文件夹' % pathName)
         elif stat.S_ISREG(mode):
            # 如果是文件             
            print('%s是文件'%pathName)
else:
            # 未知类型            
            print('•未知目录类型 %s' % pathName)
listCurrentDirectoryMode('.')

上面代码中我们使用了S_ISDIR来判断是否是文件夹,使用S_ISREG来判断是否是文件,

其他类型的判断如下:

if stat.S_ISREG(mode):           #判断是否一般文件   
    print 'Regular file.'
elif stat.S_ISLNK (mode):         #判断是否链接文件   
    print 'Shortcut.'
elif stat.S_ISSOCK (mode):        #判断是否套接字文件       
    print 'Socket.'
elif stat.S_ISFIFO (mode):        #判断是否命名管道   
    print 'Named pipe.'
elif stat.S_ISBLK (mode):         #判断是否块设备   
    print 'Block special device.'
elif stat.S_ISCHR (mode):         #判断是否字符设置  
    print 'Character special device.'
elif stat.S_ISDIR (mode):         #判断是否目录  
    print 'directory.'

通过函数filemode可以很方便的打印文件的mode信息:

def printChmode(path):
       files = os.listdir(path)
       for name in files:
         pathName = os.path.join(path, name)
         mode = os.stat(pathName).st_mode         
        print(filemode(mode))
printChmode('.')

Thread类init方法定义如下:

def __init__(self, group=None, target=None, name=None,
             args=(), kwargs=None, *, daemon=None):

相关推荐

  1. Python 模块

    2024-06-11 08:56:03       28 阅读
  2. Python 模块和包

    2024-06-11 08:56:03       44 阅读
  3. python模块 — json

    2024-06-11 08:56:03       49 阅读
  4. Python ipaddress模块介绍

    2024-06-11 08:56:03       44 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-06-11 08:56:03       5 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-06-11 08:56:03       5 阅读
  3. 在Django里面运行非项目文件

    2024-06-11 08:56:03       4 阅读
  4. Python语言-面向对象

    2024-06-11 08:56:03       6 阅读

热门阅读

  1. xgboost导出为pmml模型包

    2024-06-11 08:56:03       16 阅读
  2. 回溯算法练习题(2024/6/10)

    2024-06-11 08:56:03       17 阅读
  3. 28.找零

    28.找零

    2024-06-11 08:56:03      24 阅读
  4. Kubernetes学习总结知识点汇总

    2024-06-11 08:56:03       18 阅读
  5. hw meta10 adb back up DCIM

    2024-06-11 08:56:03       20 阅读
  6. 【Spring Boot】过滤敏感词的两种实现

    2024-06-11 08:56:03       14 阅读
  7. 鼠标侧键映射虚拟桌面切换 —— Win11

    2024-06-11 08:56:03       17 阅读
  8. YOLOv5的predict.py逐句讲解(学习笔记)

    2024-06-11 08:56:03       22 阅读
  9. 递归

    递归

    2024-06-11 08:56:03      24 阅读