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

回答の条件
  • 1人1回まで
  • 13歳以上
  • 登録:2017/10/11 15:07:26
  • 終了:2017/10/18 15:10:04
id:halohalolin

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件)

id:TransFreeBSD No.1

TransFreeBSD回答回数668ベストアンサー獲得回数2682017/10/15 16:47:30

ポイント100pt
            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が考慮されてないので別でエラー出る可能性も。

id:halohalolin

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

2017/10/19 10:11:24
  • id:halohalolin
    svn-backup-dumps.py は、 http://svn.apache.org/repos/asf/subversion/trunk/tools/server-side/svn-backup-dumps.py のものを拝借しました。
  • id:a-kuma3
    Python 2.x だったら動くような気もしますが。
  • id:halohalolin
    a-kuma3ありがとうございます。
    Pythonのバージョン指定に関する記述を見つけられなかったのですが(調べ方が甘かった?)、Python2用なんですかあのコード。
    また今度バージョンを下げれば改善するか調べてみます。
  • id:a-kuma3
    >(調べ方が甘かった?)
    ざっと svn のリポジトリを見てみましたが、Python のバージョンに関する記載は見つけられませんでした。
    Python 2.x → 3.x で文字列の扱いが変わってるっぽい(エラーメッセージで探すと、情報はいろいろと)ので、そうだろうな、と。

    # いまどき、git じゃなくて svn なところも、推して知るべしかと
  • id:halohalolin
    a-kuma3さんが指摘されていた、Pythonを3系から2系にダウングレードする件を試してみたところあっさり成功しました。
    大変ありがとうございました。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません