日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

c++读取txt文件中的数字_在Python中读取包中的数据文件的三种方式

發(fā)布時間:2024/10/6 c/c++ 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 c++读取txt文件中的数字_在Python中读取包中的数据文件的三种方式 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

我們知道,寫Python代碼的時候,如果一個包(package)里面的一個模塊要導(dǎo)入另一個模塊,那么我們可以使用相對導(dǎo)入:

假設(shè)當(dāng)前代碼結(jié)構(gòu)如下圖所示:

其中test_1是一個包,在util.py里面想導(dǎo)入同一個包里面的read.py中的read函數(shù),那么代碼可以寫為:

from .read import readdef util():read()

其中的.read表示當(dāng)前包目錄下的read.py文件。此時read.py文件中的內(nèi)容如下:

def read():print('閱讀文件')

通過包外面的main.py運行代碼,運行效果如下圖所示:

現(xiàn)在,我們增加一個數(shù)據(jù)文件,data.txt,它的內(nèi)容如下圖所示:

并且想通過read.py去讀取這個數(shù)據(jù)文件并打印出來。

修改read.py,試圖使用相對路徑來打開這個文件:

def read():with open('./data.txt', encoding='utf-8') as f:text = f.read()print(text)

運行代碼發(fā)現(xiàn)報錯:

這個原因很簡單,就是如果數(shù)據(jù)文件的地址寫為:./data.txt,那么Python就會從當(dāng)前工作區(qū)文件夾里面尋找data.txt。由于我們運行的是main.py,那么當(dāng)前工作區(qū)就是main.py所在的文件夾,而不是test_1文件夾。所以就會出現(xiàn)找不到文件的情況。

為了解決這個問題,我們有三種解決方式。

  • 使用絕對路徑
def read():with open('/Users/kingname/Project/DataFileExample/test_1/data.txt', encoding='utf-8') as f:text = f.read()print(text)

運行效果如下圖所示:

  • 先獲取read.py文件的絕對路徑,再拼接出數(shù)據(jù)文件的絕對路徑:
import osdef read():basepath = os.path.abspath(__file__)folder = os.path.dirname(basepath)data_path = os.path.join(folder, 'data.txt')with open(data_path, encoding='utf-8') as f:text = f.read()print(text)

運行效果如下圖所示:

  • 使用pkgutil庫
import pkgutildef read():data_bytes = pkgutil.get_data(__package__, 'data.txt')data_str = data_bytes.decode()print(data_str)

運行效果如下圖所示:

pkgutil是Python自帶的用于包管理相關(guān)操作的庫,pkgutil能根據(jù)包名找到包里面的數(shù)據(jù)文件,然后讀取為bytes型的數(shù)據(jù)。如果數(shù)據(jù)文件內(nèi)容是字符串,那么直接decode()以后就是正文內(nèi)容了。

為什么pkgutil讀取的數(shù)據(jù)文件是bytes型的內(nèi)容而不直接是字符串類型? 這是因為并不是所有數(shù)據(jù)文件都是字符串,如果某些數(shù)據(jù)文件是二進制文件或者圖片,那么以字符串方式打開就會導(dǎo)致報錯。所以為了通用,pkgutil會以bytes型方式讀入數(shù)據(jù),這相當(dāng)于open函數(shù)的“rb”讀取方式。

使用pkgutil還有一個好處,就是只要知道包名就可以找到對應(yīng)包下面的數(shù)據(jù)文件,數(shù)據(jù)文件并不一定要在當(dāng)前包里面。

例如修改代碼結(jié)構(gòu)如下圖所示:

另一個包test_2里面有一個數(shù)據(jù)文件data2.txt。此時如果要在teat_1包的read.py中讀取data2.txt中的內(nèi)容,那么只需要修改pkgutil.get_data的第一個參數(shù)為test_2和數(shù)據(jù)文件的名字即可,運行效果如下圖所示:

而前兩種方法都不如pkgutil簡單。

所以使用pkgutil可以大大簡化讀取包里面的數(shù)據(jù)文件的代碼。

與50位技術(shù)專家面對面20年技術(shù)見證,附贈技術(shù)全景圖

總結(jié)

以上是生活随笔為你收集整理的c++读取txt文件中的数字_在Python中读取包中的数据文件的三种方式的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 美国少妇在线观看免费 | 三浦理惠子av在线播放 | 欧美成年人视频在线观看 | 黄色链接视频 | 91香蕉国产在线观看软件 | 成人无码精品1区2区3区免费看 | 男人操女人的视频 | 超碰1997 | 国产18av | 黑人精品一区二区 | 91资源在线观看 | 亚洲日本护士毛茸茸 | 特黄大片又粗又大又暴 | 亚洲琪琪| 国产高清在线观看视频 | 高hnp视频 | 人与嘼交av免费 | 五月天中文字幕 | 欧美a天堂| yjizz视频| 免费日韩毛片 | 日本欧美韩国国产精品 | 日韩青青草| 高中男男gay互囗交观看 | 天天狠狠干 | 激情超碰 | 久久久久国产免费 | 日韩一级黄 | 51成人网 | jizzjizz视频 | 亚洲视频久久久 | 欧美性jizz18性欧美 | 色偷偷影院| 久久精品久久精品久久精品 | 日韩专区一区二区三区 | 114国产精品久久免费观看 | 男女猛烈无遮挡 | 特黄三级| 欧美一级做a爰片久久高潮 久热国产精品视频 | jvid乐乐 | 国产精品视频h | 羞羞的软件 | 国产精品二 | 亚洲成人黄色小说 | 亚色在线视频 | wwwav网站 | 特黄在线 | 成人h动漫精品一区二区器材 | 精品少妇| 情侣黄网站免费看 | 青青青手机视频在线观看 | 国产黄色www | 亚洲免费国产 | 国产免费一区 | 性欧美熟妇videofreesex | 香蕉成人在线视频 | 黄色免费视频网站 | 99久久国产热无码精品免费 | 成人午夜小视频 | av大片网站 | 黄色片在线免费看 | 91久久 | 日韩亚洲在线 | 亚洲一级精品 | 国产 欧美 日本 | 日本少妇毛茸茸高潮 | 久久无码视频一区 | 色呦呦国产 | 久久久久美女 | 日本在线视频一区 | 国产福利91精品一区二区三区 | 成人美女免费网站视频 | 亚洲国产成人91porn | 人妻精品一区二区在线 | 婷婷六月综合 | 正在播放国产一区 | 天天伊人网 | 国产肥白大熟妇bbbb视频 | 台湾a级片 | 中文理论片 | 不卡的av电影 | 在线二区| 四虎av影院 | 卡通动漫av | 制服丝袜av电影 | 91精品免费在线观看 | av资源新版在线天堂 | sm久久捆绑调教精品一区 | 国产黄色片在线播放 | 小宝贝真紧h军人h | www中文字幕在线观看 | 尹人成人 | 草草视频在线观看 | 久久激情网站 | 国产成人三级在线播放 | 久久精品视频观看 | 香蕉视频色 | 日韩国产区| 亚洲视频你懂的 |