@文件处理
目录与路径
路径和目录的区别:目录和路径的区别
OS模块12
# 导入关键模块
import os
from os.path import dirname
print('=== 当前文件名 ===')
print(__file__) # 输出:E:/PythonCode/0714/SOH-estimation-main/linshi3.py
print('\n=== 文件路径 ===')
print(os.path.dirname(__file__)) # 输出:E:/PythonCode/0714/SOH-estimation-main
print('\n=== 当前文件所在目录 ===')
print(os.path.dirname(os.path.abspath(__file__))) # 输出:E:\PythonCode\0714\SOH-estimation-main
print('\n=== 当前文件所在目录 ===')
print(os.getcwd()) # 输出:E:\PythonCode\0714\SOH-estimation-main
print('\n=== 当前文件所在目录 ===')
print(os.path.abspath(dirname(__file__))) # 输出:E:\PythonCode\0714\SOH-estimation-main
print('\n=== 当前文件所在目录的绝对路径 ===')
print(os.path.abspath(".")) # 输出:E:\PythonCode\0714\SOH-estimation-main
print(os.path.abspath('.')) # 输出:E:\PythonCode\0714\SOH-estimation-main
print('\n=== 当前文件父级目录绝对路径 ===')
print(os.path.abspath(r"..")) # 输出:E:\PythonCode\0714
print('\n=== 当前文件绝对路径 ===')
print(os.path.abspath("E:/PythonCode/0714/SOH-estimation-main/linshi3.py")) # 输出:E:\PythonCode\0714\SOH-estimation-main\linshi3.py
print("\n ===当前文件父级目录 === ")
package_dir = os.path.abspath(dirname(dirname(__file__)))
print(package_dir) # 输出:E:\PythonCode\0714
print("\n ===当前文件父父级目录 === ")
print(os.path.abspath(dirname(dirname(dirname(__file__))))) # 输出:E:\PythonCode
print('\n=== 返回文件名 ===')
print(os.path.basename('/SOH-estimation-main/linshi3.py')) # 输出:linshi3.py
print('\n=== 返回目录路径 ===')
print(os.path.dirname('/SOH-estimation-main/linshi3.py')) # 输出:/SOH-estimation-main
print('\n=== 分割文件名与路径 ===')
print(os.path.split('/SOH-estimation-main/linshi3.py')) # 输出:('/SOH-estimation-main', 'linshi3.py')
print('\n=== 将目录和文件名合成一个路径 ===')
print(os.path.join('root', 'test', 'linshi3.py')) # 输出:root\test\linshi3.py
正斜杠/与反斜杠\ 3
对于正斜杠’/‘与反斜杠’’,引文已经说得很清楚了,里面还涉及了路径的多种呈现形式,如前面加’r’或’R’,亦或用’\’,不再赘余。
至于正斜杠’/‘与反斜杠’'的转化,请参考4
路径的拼接
首先参考了python路径拼接os.path.join()函数的用法,但是在程序还是很难直接应用于实际读取文件,故稍作变化:
path_old = os.getcwd() # 输出: E:\PythonCode\0714\SOH-estimation-main
path_new = os.path.join(path_old, 'test.txt')
print(path_new) # 输出: E:\PythonCode\0714\SOH-estimation-main\test.txt
此外,还有比较小众但是简单的方法,直接通过’+'拼接起来呗,上代码:
path_old = os.getcwd() # 输出: E:\PythonCode\0714\SOH-estimation-main
file_path = path_old + 'test.txt'
print(path_new) # 输出: E:\PythonCode\0714\SOH-estimation-main\test.txt
绝对路径与相对路径的应用
Python绝对路径和相对路径详解中对于什么是绝对路径与相对路径有不错的图解,好,下面开始介绍绝对路径与相对路径的两种应用!
导入模块
参考在Python中以绝对路径或者相对路径导入文件的方法,不再赘余。
文件读写或加载保存
先介绍个有趣的东西,更换当前工作目录,参照这位大佬的:os.chdir(),下面是代码:
# -*- coding: UTF-8 -*-
import os
import pandas as pd
retval = os.getcwd() # 查看当前工作目录
print("当前工作目录为 %s" % retval) # 输出:E:\PythonCode\0714\SOH-estimation-main
os.chdir(r"E:\PythonCode\1023\Bayesian-Regression-and-Bitcoin-master\Data") # 修改当前工作目录
retval = os.getcwd() # 获取修改后的工作目录
print("目录修改成功 %s" % retval) # 输出:E:\PythonCode\1023\Bayesian-Regression-and-Bitcoin-master\Data
data = pd.read_csv('test_180.csv')
print(data)
为什么说有趣呢,有人可能会说,你上面使的不是绝对路径么,那我读取文件啥的,直接用绝对路径不就行了,哈哈哈,我之前也是这样想的,可是呢,如果要读取其他文件呢,一个一个加么?
当然,还有其他方式,详参sys.path.insert(0,"/path") 的用法
现在,我准备介绍数据文件(txt、csv、xlxs)的处理方式,可能和标题不是很相关,哈哈哈;针对txt、csv、xlxs这三种数据格式,有很多方式,但是我比较推崇pandas,它针对这三者都适用,详参这位帅气小哥哥/漂亮小姐姐的pandas之数据文件导入和导出(python读取.csv,.txt,excel文件(.xlsx)以及导出为.csv、excel文件),讲得很好!