python跨平台处理绝对路径和相对路径,open,with

跨平台处理方式

获得当前文件夹的绝对路径,如下:

import os
path1=os.path.abspath('.')   #表示当前所处的文件夹的绝对路径
path2=os.path.abspath('..')  #表示当前所处的文件夹上一级文件夹的绝对路径

所以我们常设置一个path1的全局变量来表示当前的绝对路径,再加上相对路径来打开需要打开的文件,这么做是为了在不同的平台上不冲突,因为不同平台在相对路径上的表示上存在区别。

Windows平台

我们常用’/‘来表示相对路径,’\‘来表示绝对路径,上面的路径里\是转义的意思.

前两个都是相对路径,第三个则是绝对路径。

open('aaa.txt')
open('/data/bbb.txt')
open('D:\\user\\ccc.txt')

#D:\user\aaa.txt
#D:\user\data\bbb.txt
#D:\user\ccc.txt

Linux平台

打开文件

打开文件

如果你要对一个文件进行读或写,你必需先用Python内置的open函数打开它,创建一个文件对象File Object,你同时必需指定文件打开模式(读r,写w,还是读和写)。值得注意的是当你打开非文本文件如图片或PDF时侯,必需用rb或wb模式。b代表二进制文件。例子如下。

# 以读模式打开文本文件
txtFileObj = open('some.txt', 'r')

# 以读模式打开非文本文件
pdfFileObj = open('some.pdf', 'rb')

File对象的属性

一个文件被打开后,你j就有了一个file对象,这时你可以通过以下属性得到有关该文件的各种信息,比如名字,访问模式。

属性描述file.closed返回true如果文件已被关闭,否则返回false。file.mode返回被打开文件的访问模式。file.name返回文件的名称。file.softspace如果用print输出后,必须跟一个空格符,则返回false。否则返回true。

阅读文件

阅读文件,你可以用file对象自带的read方法。例子如下:

扫描二维码关注公众号,回复: 10025812 查看本文章
# 打开非文本文件
txtFileObj = open('some.txt', 'r')
print(txtFileObj.read())

# 打开非文本文件
pdfFileObj = open('original.pdf', 'rb')
pdfFileObj.read()


########## 当你的文本文件有多行时,而你不想一次性打印出所有内容,你可以这么做。###########

# 以读模式打开非文本文件
txtFileObj = open('some.txt', 'r')
# 打印第5行
print(txtFileObj.read(5))
# 逐行打印
print(txtFileObj.readlines())
# 或者如下操作
for line in txtFileObj: 
    print(line)

写入文件

要将数据写入一个文件,你必需以写或读写的模式先创建一个文件对象,然后使用write方法写入。下面是两个例子。

# 以写模式创建文件对象,然后写入
txtFileObj = open('some.txt', 'r+')
txtFileObj.write("Hello, world")
txtFileObj.close()

# 以写模式打开非文本文件,然后写入
f = some_data
with open('some.pdf', 'wb+') as pdfFileObj:
    for chunk in f.chunks():
        pdfFileObj.write(chunk)

关闭文件与with声明

当你打开一个文件对象后,你一定要记住用f.close()关闭这个文件对象,这样才会释放系统资源。如果你老是忘记关闭一个文件,我们强烈建议使用python的with声明打开一个文件。这样在你完成文件读写操作后,python会自动关闭文件对象。例子如下:

# 以写模式创建文件对象,然后写入
with open('some.txt', 'r+') as txtFileObj:
    txtFileObj.write("Hello, world")

参考

https://zhuanlan.zhihu.com/p/37002940
https://blog.csdn.net/databatman/article/details/49453953
python,os操作文件,文件路径(上一级目录):https://blog.csdn.net/longshenlmj/article/details/13294871

  import os
  '''获得当前路径
  '''
  cwd=os.getcwd()
  print(cwd)
  
  
  '''
  得到当前文件夹下的所有文件和文件夹
 '''
 print(os.listdir())
 
 
 '''
 delete file
 '''
 os.remove('sw.vaps')
 print(os.listdir())
 
 
 '''
 删除单个目录和多个目录
 '''
 os.removedir()
 os.removedir()
 
 
 '''
 检查是否是文件/文件夹
 '''
 print(os.path.isfile('/Users/liuxiaolong/PycharmProjects/untitled/sw.vaps'))
 print(os.path.isdir('/Users/liuxiaolong/PycharmProjects/untitled/sw.vaps'))
 
 
 '''
 检查文件路径是否存在
 '''
 
 print(os.path.exists('/Users/liuxiaolong/PycharmProjects/untitled/iiii'))
 
 '''
 分离文件名
 分离扩展名
 
 '''
 [dirname,filename]=os.path.split('/Users/liuxiaolong/PycharmProjects/untitled/sw.vaps')
 print(dirname,"\n",filename)
 
 [fname,fename]=os.path.splitext('/Users/liuxiaolong/PycharmProjects/untitled/sw.vaps')
 print(fname,"\n",fename)
 
 '''
 获得文件路径
 获得文件名
 获得当前环境
 '''
 print("get pathname:",os.path.dirname('/Users/liuxiaolong/PycharmProjects/untitled/sw.vaps'))
 print("get filename:",os.path.basename('/Users/liuxiaolong/PycharmProjects/untitled/sw.vaps'))
 print(os.getenv)

发布了92 篇原创文章 · 获赞 4 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/djfjkj52/article/details/104729942
今日推荐