人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

svn-backup-dumps.pyで質問です。WindowsサーバにてSubversionの差分バックアップを取ろうとしています。そこで「"D:\(python3格納先)\python.exe" "D:\(svn-backup-dumps.py格納先)\SubversionBackup\svn-backup-dumps.py" -i -b (バックアップ元のフォルダ) (バックアップ先のドライブ)」としたところ追記に記載するエラーが出て失敗しました。どうすればよいでしょうか?

●質問者: くじぇ
●カテゴリ:コンピュータ
○ 状態 :終了
└ 回答数 : 1/1件

▽最新の回答へ

質問者から

Traceback (most recent call last):
File "D:\(svn-backup-dumps.py格納先)\svn-backup-dumps.py", line 682, in <mo
dule>
rc = backup.execute()
File "D:\(svn-backup-dumps.py格納先)\svn-backup-dumps.py", line 598, in exe
cute
return self.export_relative_incremental()
File "D:\(svn-backup-dumps.py格納先)\svn-backup-dumps.py", line 579, in exp
ort_relative_incremental
headrev = self.get_head_rev()
File "D:\(svn-backup-dumps.py格納先)\svn-backup-dumps.py", line 437, in get
_head_rev
r = self.exec_cmd(cmd)
File "D:\(svn-backup-dumps.py格納先)\svn-backup-dumps.py", line 375, in exe
c_cmd
return self.exec_cmd_nt(cmd, output, printerr)
File "D:\(svn-backup-dumps.py格納先)\svn-backup-dumps.py", line 430, in exe
c_cmd_nt
bufout += buf
TypeError: must be str, not bytes

という結果になります。
Pythonのバージョンは 3.6.3 です。
よろしくお願い致します。


1 ● TransFreeBSD
●100ポイント
 proc = Popen(cmd, stdout=PIPE, stderr=None, shell=False)
:
 stdout = proc.stdout
 bufout = ""
:
 buf = stdout.read(16384)
:
 bufout += buf

https://docs.python.jp/3/library/subprocess.html#subprocess.Popen.stdout

If the encoding or errors arguments were specified or the universal_newlines argument was True, the stream is a text stream, otherwise it is a byte stream.


ってな感じでotherwise it is a byte streamになってるからだと思いましたが、バイナリも通りそうなのでどっちかって言うと、423行目の

 bufout = ""

 bufout = b""

でどうかな?と思います。
ただ、3が考慮されてないので別でエラー出る可能性も。


くじぇさんのコメント
TransFreeBSDさんありがとうございました。 結局のところa-kuma3さんが指摘されていた、Pythonを3系から2系にダウングレードする件を試してみたところあっさり成功した為、解決とさせていただきました。 またわからない点がありましたらよろしくお願い致します。
関連質問

●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ