第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

做一個(gè)基本的TypeError?

做一個(gè)基本的TypeError?

呼喚遠(yuǎn)方 2022-07-12 10:30:44
我有這個(gè)讀取風(fēng)讀數(shù)的基本程序,它按數(shù)量、最小值、最大值和平均值排序,然后用讀數(shù)創(chuàng)建一個(gè)新文件。但是,我還希望它能夠處理文件操作期間可能發(fā)生的任何異常,并確保文件始終關(guān)閉,即使發(fā)生異常也是如此。我對(duì) python 和 numpy 很陌生,所以我正在尋求有關(guān)如何解決這個(gè)問(wèn)題的幫助。我可能措辭錯(cuò)誤。我希望錯(cuò)誤處理這樣做:如果 txt 文件包含字符串或其他內(nèi)容,則程序不應(yīng)崩潰,而是關(guān)閉文件然后停止腳本import numpy as npdef main():    # Converts into a numpy array.    # loadtxt function has the default dtype as float    x = np.loadtxt("wind.txt")    print("There are", len(x), "")    print('Average:', np.average(x))    print('Max:', np.amax(x))    print('Min:', np.amin(x))    file = open("testfile.txt", "w")    file.write(f"Amount: {len(x)}\n")    file.write(f"Average: {np.average(x)}\n")    file.write(f"Max: {np.amax(x)}\n")    file.write(f"Min: {np.amin(x)}\n")    file.close()main()
查看完整描述

1 回答

?
慕桂英546537

TA貢獻(xiàn)1848條經(jīng)驗(yàn) 獲得超10個(gè)贊

loadtxt是一個(gè)相當(dāng)長(zhǎng)的函數(shù),但關(guān)于它的文件處理:


fown = False

try:

    if isinstance(fname, os_PathLike):

        fname = os_fspath(fname)

    if _is_string_like(fname):

        fh = np.lib._datasource.open(fname, 'rt', encoding=encoding)

        fencoding = getattr(fh, 'encoding', 'latin1')

        fh = iter(fh)

        fown = True

    else:

        fh = iter(fname)

        fencoding = getattr(fname, 'encoding', 'latin1')

except TypeError:

    raise ValueError('fname must be a string, file handle, or generator')


...


try:

    for x in read_data(_loadtxt_chunksize):

        if X is None:

            X = np.array(x, dtype)

        else:

            nshape = list(X.shape)

            pos = nshape[0]

            nshape[0] += len(x)

            X.resize(nshape, refcheck=False)

            X[pos:, ...] = x

finally:

    if fown:

        fh.close()

總之,如果你給它一個(gè)文件名(一個(gè)字符串),它會(huì)打開(kāi)它并注意到它owns是文件。實(shí)際的文件讀取和解析dtype受try/finally子句保護(hù)。如果它擁有該文件,則將其關(guān)閉。


因此,如果ValueError由于無(wú)法轉(zhuǎn)換為浮點(diǎn)數(shù)的字符串而得到 a,則不必?fù)?dān)心關(guān)閉文件。事實(shí)上,即使你想,你也做不到,因?yàn)槟銦o(wú)權(quán)使用fh手柄。


如果您希望您的代碼在此值錯(cuò)誤后執(zhí)行不同的操作,請(qǐng)將其包裝:


In [126]: try: 

     ...:     np.loadtxt(["1 2 two"]) 

     ...: except ValueError: 

     ...:     print('got a value error') 

     ...:                                                                                        

got a value error

或修改您的main:


def main():

    # Converts into a numpy array.

    # loadtxt function has the default dtype as float

    try:

         x = np.loadtxt("wind.txt")

    except ValueError:

         print('error reading "wind.txt")

         return   # skips the rest

    print("There are", len(x), "")

    print('Average:', np.average(x))

    print('Max:', np.amax(x))

    print('Min:', np.amin(x))


    file = open("testfile.txt", "w")

    file.write(f"Amount: {len(x)}\n")

    file.write(f"Average: {np.average(x)}\n")

    file.write(f"Max: {np.amax(x)}\n")

    file.write(f"Min: {np.amin(x)}\n")

    file.close()


查看完整回答
反對(duì) 回復(fù) 2022-07-12
  • 1 回答
  • 0 關(guān)注
  • 164 瀏覽
慕課專(zhuān)欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢(xún)優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)