2016-07-01 11 views
2

私はこのプログラムを書いていますが、HTMlファイルを取り込み、テキストを置き換えて別のディレクトリの別のファイルに戻します。TypeError - このエラーは何を意味しますか?

このエラーが発生しました。

Traceback (most recent call last): 
     File "/Users/Glenn/jack/HTML_Task/src/HTML Rewriter.py", line 19, in <module> 
     with open (os.path.join("/Users/Glenn/jack/HTML_Task/src", out_file)): 
       File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/posixpath.py", line 89, in join 
     genericpath._check_arg_types('join', a, *p) 
     File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/genericpath.py", line 143, in _check_arg_types 
     (funcname, s.__class__.__name__)) from None 
    TypeError: join() argument must be str or bytes, not 'TextIOWrapper' 

以下は私のコードです。誰にも私が実装できる解決策がありますか、それとも私は火でそれを殺すべきですか?

import re 
    import os 
    os.mkdir ("dest") 

    file = open("2016-06-06_UK_BackToSchool.html").read() 
    text_filtered = re.sub(r'http://', '/', file) 
    print (text_filtered) 

    with open ("2016-06-06_UK_BackToSchool.html", "wt") as out_file: 
     print ("testtesttest") 

    with open (os.path.join("/Users/Glenn/jack/HTML_Task/src", out_file)): 
       out_file.write(text_filtered) 

    os.rename("/Users/Glenn/jack/HTML_Task/src/2016-06-06_UK_BackToSchool.html", "/Users/Glenn/jack/HTML_Task/src/dest/2016-06-06_UK_BackToSchool.html") 
+1

にスペースを使用しないでください。 out_fileは2番目の 'with'ステートメントには存在せず、' with'には 'as'節がありません。そうでなければ、あなたの問題は 'out_file'に参加しようとしていると思っています。文字列' out_file'は文字列ではなく、 'join'可能ではありません。名前に参加する必要があります。 – Delioth

答えて

1

この変更してみてください:この上

with open ("2016-06-06_UK_BackToSchool.html", "wt") as out_file 

with open ("2016-06-06_UK_BackToSchool.html", "w") as out_file: 

またはこの:ここ

with open ("2016-06-06_UK_BackToSchool.html", "wb") as out_file: 
2
with open (os.path.join("/Users/Glenn/jack/HTML_Task/src", out_file)): 

out_fileの場合TextIOWrapper、文字列ではありません。

os.path.joinは引数として文字列をとります。


  1. 変数としてキーワード名を使用しないでください。 fileはキーワードです。
  2. あなたのインデントをチェック
  3. os.mkdir ("dest")関数呼び出しの間
+0

私は/brunodesthuilliersを取得していません:s /ファイルポインタ/ TextIOWrapperインスタンス/;) –

+0

再度説明できますか? :) –

+0

あなたは "ここで' out_file'はファイルポインタです。 " - 技術的には、"ファイルポインタ "ではありません。なぜなら、Pythonにはポインタがないので、' TextIOWrapper'インスタンスです。 –

関連する問題