gpt4 book ai didi

Python使用os模块和fileinput模块来操作文件目录

转载 作者:qq735679552 更新时间:2022-09-29 22:32:09 25 4
gpt4 key购买 nike

CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.

这篇CFSDN的博客文章Python使用os模块和fileinput模块来操作文件目录由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.

os模块 在python编程中,我们会经常使用到文件和目录,这些操作python提供一个os模块,里面有很多操作文件和目录的函数. 。

下面介绍os的常用功能 。

1.获取当前路径 。

?
1
2
>>> os.getcwd()
'/root/python'

2.获取目录中的内容 。

?
1
2
>>> os.listdir(os.getcwd())
[ 'deco.py' , '6.py' , 'inputfile.py' , 'uniFile.py' , 'oddnogen.py' , 'ospathex.py' , 'operate.py' , 'bianliang.py' , 'typecheck1.py' ]

3.创建目录 。

?
1
>>> os.mkdir( '/root/pythontest' )

   一次性创建嵌套目录可使用os.makedirs,makedirs可以生成多层递归目录,removedirs可以删除多层递归的空目录,若目录中有文件则无法删除;os.system():运行shell命令; 。

?
1
2
3
4
5
6
7
8
9
10
11
>>> os.environ[ 'HOME' ]
'/root'
>>> os.makedirs(os.path.join(os.environ[ 'HOME' ], 'test' , 'py' ))
>>> os.system( 'ls -lR /root/test' )
/ root / test:
total 4
drwxr - xr - x 2 root root 4096 2013 - 03 - 29 17 : 27 py
 
/ root / test / py:
total 0
0

4.改变工作目录 。

?
1
2
3
4
5
>>> os.getcwd()
'/root/python'
>>> os.chdir( '/etc' )
>>> os.getcwd()
'/etc'

5.删除目录 。

?
1
2
>>> os.rmdir( '/root/pythontest' )
>>>

注:删除目录必须是空目录 。

6.删除文件 。

?
1
>>> os.remove( '/root/pytest.py' )

7.重命名文件或者目录 。

?
1
>>> os.rename( '/root/pytest.py' , '/root/test.py' )

8.字符串给出当前平台使用的终止符,例如:Windows使用'\r\n',Linux使用'\n' 。

?
1
2
>>> os.linesep
'\n'

以下是os.path模块 。

9.判断是否是目录 。

?
1
2
>>> os.path.isdir( '/root/python' )
True

10.判断是否为文件 。

?
1
2
>>> os.path.isfile( '/root/python' )
False

11.返回一个路径的目录名和文件名 。

?
1
2
>>> os.path.split(os.getcwd())
( '/root' , 'python' )

12.判断是否存在文件或目录name 。

?
1
2
3
4
>>> os.path.exists( '/root' )
True
>>> os.path.exists( '/root/1.py' )
False

13.获得文件大小 。

?
1
2
>>> os.path.getsize( '/root/python/if.py' )
282

14.返回文件路径,返回文件名 。

?
1
2
3
4
>>> os.path.dirname( '/root/python/if.py' )
'/root/python'
>>> os.path.basename( '/root/python/if.py' )
'if.py'

15.连接目录与文件名或目录 。

?
1
2
>>> os.path.join( '/dave/test/' , '1.py' )
'/dave/test/1.py'

判断一个目录里哪些是文件哪些是目录. 。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
>>> for file in os.listdir( '/root/python' ):
...   if os.path.isdir( file ):
...     print file , "is a directory"
...   else :
...     print file , "is a file"
...
deco.py is a file
inputfile.py is a file
operate.py is a file
hello.pyc is a file
userpw.py is a file
4.py is a file
answer is a directory

fileinput模块 fileinput模块可以遍历文本文件的所有行.它的工作方式和readlines很类似,不同点在于,它不是将全部的行读到列表中而是创建了一个xreadlines对象. 。

下面是fileinput模块中的常用函数 。

  • input() #它会返回能够用于for循环遍历的对象.
  • filename() #返回当前文件的名称
  • lineno() #返回当前(累计)的行数
  • filelineno() #返回当前文件的行数
  • isfirstline() #检查当前行是否是文件的第一行
  • close() #关闭序列
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
>>> import fileinput
>>> for eachline in fileinput. input ( "/root/datafile.txt" ):
...   print eachline
...
Dave
 
python
 
>>> for eachline in fileinput. input ( "/root/datafile.txt" ):
...   print fileinput.filename()
...
/ root / datafile.txt
/ root / datafile.txt
>>> for eachline in fileinput. input ( "/root/datafile.txt" ):
...   print fileinput.lineno(),eachline
...
1 Dave
 
2 python
 
>>> for eachline in fileinput. input ( "/root/datafile.txt" ):
...   if fileinput.isfirstline():
...     print eachline
...   else :
...     break
...
Dave

下面是一个关于日志分析的小实例,将日志中截取匹配的电话号码,如800-333-1212 。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
root@ 10.1 . 1.45 :~ # cat telphone.log
027 - 987 - 1212
02187899682
021 - 110 - 9632
root@ 10.1 . 1.45 :~ # cat fileinputtest.py
#!/usr/bin/python2.5
 
import fileinput
import sys
import re
 
pattern = "\d{3}-\d{3}-\d{4}"
filePath = "/root/telphone.log"
 
for eachline in fileinput. input (filePath):
   a = re.search(pattern,eachline)
   if a:
#    sys.stdout.write("============\n")
#    sys.stdout.write(eachline)
      print "============"
      print 'line:' ,fileinput.lineno(), 'filename:' ,fileinput.filename(), 'length:' , len (eachline.strip( '\n' )),eachline
root@ 10.1 . 1.45 :~ # ./fileinputtest.py
= = = = = = = = = = = =
line: 1 filename: / root / telphone.log length: 12 027 - 987 - 1212
 
= = = = = = = = = = = =
line: 3 filename: / root / telphone.log length: 12 021 - 110 - 9632

最后此篇关于Python使用os模块和fileinput模块来操作文件目录的文章就讲到这里了,如果你想了解更多关于Python使用os模块和fileinput模块来操作文件目录的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com