teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

3

解決したい事の編集

2020/12/17 07:00

投稿

Savanof
Savanof

スコア33

title CHANGED
File without changes
body CHANGED
@@ -36,4 +36,47 @@
36
36
 
37
37
  今回、解凍しようとしていたzipファイルの中身はroiファイル(.roi)という特殊なファイル形式なのですが、他のファイル形式(例えばtxt)では問題無く解凍する事ができました。
38
38
 
39
- 恐らくPythonの問題ではなく、ImageJ側の問題の方が強いです。
39
+ 恐らくPythonの問題ではなく、ImageJ側の問題の方が強いです。
40
+
41
+ ### 追記2
42
+ この様なコードでzipフォルダーの中のファイルパスをの文字コードを確かめてみたのですが、全てunicode型でした。
43
+ ```
44
+ import zipfile
45
+
46
+ with zipfile.ZipFile("C://Users//For Programming//Documents//Python Scripts\OutletHDD//RoiSet.zip") as existing_zip:
47
+ lis = existing_zip.namelist()
48
+
49
+ print(lis)
50
+
51
+ for i in lis:
52
+ print(isinstance(i,unicode))
53
+
54
+ ```
55
+ Daregadaさんから教えて貰った下記のリンクを見てみると、恐らく解凍できないのはzipフォルダーの中に入っているファイルが全てunicode型である事が原因だと思います。
56
+ 「Python 2.7.4 fails while extracting zip files when 'member' is a unicode path.」
57
+ https://bugs.python.org/msg186264
58
+
59
+ そこでZipフォルダーの中に入っているファイルパスを全て"utf-8"型に変更しようと思ったのですが、zipフォルダーを解凍しないという条件下でどの様に変更すればいいか分かりません。
60
+
61
+ ```Python2
62
+ import zipfile
63
+ import os
64
+ import codecs
65
+
66
+ with zipfile.ZipFile(r"C:\Users//For Programming//Documents//Python Scripts//OutletHDD//RoiSet.zip") as existing_zip:
67
+ lis = existing_zip.namelist()
68
+
69
+ for i in lis:
70
+ fullpath = r"C://Users//For Programming//Documents//Python Scripts//OutletHDD//RoiSet.zip" + "//" + i
71
+ fullpath_utf8 = fullpath.decode("utf-8")
72
+ os.rename(fullpath, fullpath_utf8)
73
+
74
+ ```
75
+ このコードではこの様なエラーコードが出てしまいました。zipファイルの中を普通のtextファイルに変えた場合も、同様のエラーが出たので、深く調べきれていませんが、恐らくzipファイル内のファイルをrenameした時のエラーだと思います。
76
+ ```
77
+ OSError: (0, "Couldn't rename file")
78
+ ```
79
+ zipフォルダ内のファイルの文字コード/パスの変更はどの様に変更すればいいでしょうか?
80
+
81
+ 参考にしたサイト
82
+ https://qiita.com/HidKamiya/items/c164a6ce07820f65c501

2

追記

2020/12/17 06:59

投稿

Savanof
Savanof

スコア33

title CHANGED
File without changes
body CHANGED
@@ -29,4 +29,11 @@
29
29
  windows10 64bit
30
30
 
31
31
  2.7.2 (v2.7.2:925a3cc3b49d, Mar 21 2020, 10:12:24)
32
- [Java HotSpot(TM) 64-Bit Server VM (Oracle Corporation)]
32
+ [Java HotSpot(TM) 64-Bit Server VM (Oracle Corporation)]
33
+
34
+ ### 追記
35
+ path周りの環境が完全にぶっ壊れてる事を疑って、shuntil系のcopyやmoveを試してみたのですが問題無く動きました。
36
+
37
+ 今回、解凍しようとしていたzipファイルの中身はroiファイル(.roi)という特殊なファイル形式なのですが、他のファイル形式(例えばtxt)では問題無く解凍する事ができました。
38
+
39
+ 恐らくPythonの問題ではなく、ImageJ側の問題の方が強いです。

1

環境の追加

2020/12/17 03:27

投稿

Savanof
Savanof

スコア33

title CHANGED
File without changes
body CHANGED
@@ -26,5 +26,7 @@
26
26
  unicode型,str型のバグかと思い、str(),unicode()等を行ってみたいのですが、上手く動きませんでした。
27
27
 
28
28
  ### 補足情報(FW/ツールのバージョンなど)
29
+ windows10 64bit
30
+
29
31
  2.7.2 (v2.7.2:925a3cc3b49d, Mar 21 2020, 10:12:24)
30
32
  [Java HotSpot(TM) 64-Bit Server VM (Oracle Corporation)]