iT邦幫忙

0

關於 Python 修改資料的方法 (已解決)

大家好
我想要做一個 Python3 的程式 ,介面是用PyQt5
主要是軟體安裝很多文件都要手動更改
所以想在一個介面上把要改的資料一次輸入好然後直接取代範本中的資料

我的做法:
將介面上輸入一些資料(ex:使用者、ip...等等)存進變數裡
然後用這些變數去取代原本的範例資料
但是在取代的程式碼一直沒辦法使用
出現 'Can't convert 'NoneType' object to str implicitly'

以下是我寫的程式(擷取出現問題的地方)

	if platform.system() == 'Windows':
       zPath = os.path.join('F:\\','ezplan')
    else:
        Path = os.path.join('F','ezplan')
        
    ip = self.lineEdit_ip.setText("") ←介面輸入ip會在這行存成變數
	f=open(os.path.join(Path,'a.txt'),'r+')  
	flist=f.readlines()  
	flist[0]= 'IP: '+ip  ←這行出現問題
	f=open(os.path.join(Path,'a.txt'),'w+')  
	f.writelines(flist)
	f.close()

想要請問是我的用法用錯了嗎?
還是有其他方式可以達到我的目的
底下的部分是可以執行的

	dirName = QFileDialog.getExistingDirectory(self,self.tr('Select Path'))
        ↑↑將選取的路徑存成變數
	f=open(os.path.join(Path,'Ma.txt'),'r+')  
	flist=f.readlines()  
	flist[0]= dirName+'\n'
	f=open(os.path.join(Path,'Ma.txt'),'w+')  
	f.writelines(flist)
	f.close()

2 個回答

2
海綿寶寶
iT邦超人 1 級 ‧ 2017-04-05 12:05:12
最佳解答
'原
ip = self.lineEdit_ip.setText("")
'改成
ip = str(self.lineEdit_IP.text())
'看看
饅頭 iT邦新手 5 級 ‧ 2017-04-05 13:50:28 檢舉

可以執行程式
但是就不是我預期的結果
他在執行的時候就會直接傳空的資料去取代資料/images/emoticon/emoticon06.gif

2
souda
iT邦研究生 5 級 ‧ 2017-04-05 10:41:31

ip = self.lineEdit_ip.setText("") 這行沒有值,請debug一下看看這段有沒有值進來!!

看更多先前的回應...收起先前的回應...
饅頭 iT邦新手 5 級 ‧ 2017-04-05 11:26:58 檢舉

我試過 ip = self.lineEdit_ip.setText("0.0.0.0")
結果還是一樣/images/emoticon/emoticon70.gif

souda iT邦研究生 5 級 ‧ 2017-04-05 11:42:16 檢舉

那有Debug嗎?出現的ip值是?

饅頭 iT邦新手 5 級 ‧ 2017-04-05 11:50:41 檢舉

竟然都是 None ! (連設 0.0.0.0 也是)

我原本預設是空的
要藉由輸入IP存入ip這個變數

souda iT邦研究生 5 級 ‧ 2017-04-05 12:14:54 檢舉

你可以直接下 ip = "0.0.0.0" 嗎? 方便把debug 圖貼上來嗎?

饅頭 iT邦新手 5 級 ‧ 2017-04-05 13:48:28 檢舉
$ python3 plan_mainwindow.py
None
Traceback (most recent call last):
  File "plan_mainwindow.py", line 96, in <module>
    myform = MyForm()
  File "plan_mainwindow.py", line 20, in __init__
    self.SetIP()
  File "plan_mainwindow.py", line 63, in SetIP
    flist[0]= 'IP: '+ip
TypeError: Can't convert 'NoneType' object to str implicitly

如果設ip='0.0.0.0'的話
可以執行程式
但是就不是我預期的結果
他會將0.0.0.0的資料直接修改

souda iT邦研究生 5 級 ‧ 2017-04-05 13:55:24 檢舉

0.0.0.0是我隨便給的,你當然可以套上其他的網址或是抓你目前使用的ip,我的目的主要是要讓你知道,你的問題再於格式給錯了!!

饅頭 iT邦新手 5 級 ‧ 2017-04-05 17:20:38 檢舉

感謝你QQ
那請問要如何改才能變成將我輸入的資料存入文件呢?

souda iT邦研究生 5 級 ‧ 2017-04-06 08:31:38 檢舉

self.lineEdit_ip 你這段我未見到宣告所以你的格式我就不得而知.
若ip = "111.111.111.111" 可以的話那你就要從self.lineEdit_ip去看看你宣告的格式.

海綿寶寶有提供轉換字串用法了唷!!

以下是技術文章連結請多加利用.
http://ithelp.ithome.com.tw/articles/10056425
http://ithelp.ithome.com.tw/articles/10158116
http://ithelp.ithome.com.tw/articles/10158196

froce iT邦新手 3 級 ‧ 2017-04-06 10:15:12 檢舉

self.lineEdit_ip.setText()
你確定有return值嗎?

饅頭 iT邦新手 5 級 ‧ 2017-04-06 11:17:41 檢舉

setText 是一開始的設定值
我改成 self.lineEdit_ip.text() 了 這是抓輸入的值

souda iT邦研究生 5 級 ‧ 2017-04-06 13:53:31 檢舉

lineEdit_ip 宣告的格式是? 你目前參考的書籍是?

饅頭 iT邦新手 5 級 ‧ 2017-04-06 15:16:49 檢舉

我是用pyqt5 但是現在沒有pyqy5的書
所以參考pyqt4 和一些qt5的書
http://doc.qt.io/qt-4.8/qlineedit.html#text-prop

我要發表回答

立即登入回答