質問編集履歴
3
発生している問題を更新
test
CHANGED
File without changes
|
test
CHANGED
@@ -11,11 +11,13 @@
|
|
11
11
|
|
12
12
|
### 前提
|
13
13
|
|
14
|
-
pythonでなシステムを作っています。
|
14
|
+
pythonでなシステムを作っています。日付箇所のフォルダ名が更新されない
|
15
|
-
結果がおかしい
|
16
15
|
|
17
16
|
### 発生している問題・エラーメッセージ
|
18
|
-
開始日のフォルダ名が更新されてない
|
17
|
+
開始日、終了日のフォルダ名が更新されてない。
|
18
|
+
単純に不等号で比較しただけだと判定できないっぽい。
|
19
|
+
|
20
|
+
なんか良い方法が無いか教えて下さい
|
19
21
|
|
20
22
|
### 該当のソースコード
|
21
23
|
|
2
ソース更新
test
CHANGED
File without changes
|
test
CHANGED
@@ -15,13 +15,7 @@
|
|
15
15
|
結果がおかしい
|
16
16
|
|
17
17
|
### 発生している問題・エラーメッセージ
|
18
|
-
|
18
|
+
開始日のフォルダ名が更新されてない
|
19
|
-
|
20
|
-
使用前
|
21
|
-

|
22
|
-
|
23
|
-
使用後
|
24
|
-

|
25
19
|
|
26
20
|
### 該当のソースコード
|
27
21
|
|
@@ -34,39 +28,40 @@
|
|
34
28
|
import glob
|
35
29
|
|
36
30
|
#フォルダ内のフォルダパスを取得
|
37
|
-
cur
|
31
|
+
curpathDir = os.getcwd()
|
38
|
-
folders = glob.glob(os.path.join(cur
|
32
|
+
folders = glob.glob(os.path.join(curpathDir, '*'))
|
39
|
-
#print("cur
|
33
|
+
#print("curpath="+curpathDir)
|
40
34
|
|
41
35
|
#前回フォルダ名を初期化する([アカウント名]-[開始日]-[終了日]-media)
|
42
|
-
prev = ['xxxx', '9999999999999999999(999999999999999)','0000000000000000000(000000000000000)','media']
|
36
|
+
prevpath = ['xxxx', '9999999999999999999(999999999999999)','0000000000000000000(000000000000000)','media']
|
43
|
-
cur
|
37
|
+
curpath = ['xxxx', '9999999999999999999(999999999999999)','0000000000000000000(000000000000000)','media']
|
44
|
-
new = ['xxxx', '9999999999999999999(999999999999999)','0000000000000000000(000000000000000)','media']
|
38
|
+
newpath = ['xxxx', '9999999999999999999(999999999999999)','0000000000000000000(000000000000000)','media']
|
45
39
|
|
46
40
|
#for文で全部のフォルダを確認
|
47
41
|
for folder in folders:
|
48
42
|
#"-"でセパレートする
|
49
|
-
cur
|
43
|
+
curpath = folder.split('-')
|
50
44
|
|
51
45
|
|
52
46
|
#前回アカウント名と同じかを比較する
|
53
|
-
if bool(prev[0] == cur
|
47
|
+
if bool(prevpath[0] == curpath[0]) :
|
54
48
|
# アカウントが同じなら現在のフォルダ→前のフォルダにファイルを移動する
|
55
|
-
new = prev
|
49
|
+
newpath = prevpath
|
56
50
|
for p in os.listdir(folder):
|
51
|
+
print("-".join(prevpath))
|
57
|
-
shutil.move(os.path.join(folder, p), "-".join(prev))
|
52
|
+
shutil.move(os.path.join(folder, p), "-".join(prevpath))
|
58
53
|
|
59
54
|
#開始日を比較してを保持
|
60
|
-
if prev[1] > cur
|
55
|
+
if prevpath[1] > curpath[1]:
|
61
|
-
new[1] = cur
|
56
|
+
newpath[1] = curpath[1]
|
62
57
|
#終了日を比較して新しい方を保持
|
63
|
-
if prev[2] < cur
|
58
|
+
if prevpath[2] < curpath[2]:
|
64
|
-
new[2] = cur
|
59
|
+
newpath[2] = curpath[2]
|
65
|
-
|
60
|
+
prevpath = newpath
|
66
|
-
if bool(new != prev):
|
61
|
+
if bool(newpath != prevpath):
|
67
|
-
#日付に変更がある場合はフォルダ名を変更してnew → prev情報をコピー
|
62
|
+
#日付に変更がある場合はフォルダ名を変更してnewpath → prevpath情報をコピー
|
68
|
-
os.rename(folder, "-".join(new))
|
63
|
+
os.rename(folder, "-".join(newpath))
|
69
|
-
|
64
|
+
|
70
65
|
|
71
66
|
#日付に変更がない場合は何もしない
|
72
67
|
|
@@ -74,7 +69,7 @@
|
|
74
69
|
os.removedirs(folder)
|
75
70
|
else:
|
76
71
|
#前回アカウント名と異なる場合は前回フォルダ名を更新して終わる
|
77
|
-
prev = cur
|
72
|
+
prevpath = curpath
|
78
73
|
|
79
74
|
#終わり
|
80
75
|
|
1
コードを修正、その結果も修正
test
CHANGED
File without changes
|
test
CHANGED
@@ -12,33 +12,16 @@
|
|
12
12
|
### 前提
|
13
13
|
|
14
14
|
pythonでなシステムを作っています。
|
15
|
-
|
15
|
+
結果がおかしい
|
16
16
|
|
17
17
|
### 発生している問題・エラーメッセージ
|
18
|
+
最後のファイルが、フォルダ名にリネームされておりまする
|
18
19
|
|
19
|
-
|
20
|
-
|
21
|
-
srcD:\新しいフォルダー (2)\Yaiko084-1184062056934174720(20191015_200247)-1411619213513428993(20210704_183341)-media\
|
22
|
-
dstD:\新しいフォルダー (2)\Yaiko084-1083343855116738560(20190110_214437)-1411619213513428993(20210704_183341)-media\
|
23
|
-
Traceback (most recent call last):
|
24
|
-
File "C:\Users\user\AppData\Local\Programs\Python\Python38\lib\shutil.py", line 788, in move
|
25
|
-
os.rename(src, real_dst)
|
26
|
-
OSError: [WinError 123] ファイル名、ディレクトリ名、またはボリューム ラベルの構文が間違っています。: 'D:\\新しいフォルダー (2)\\Yaiko084-1184062056934174720(20191015_200247)-1411619213513428993(20210704_183341)-media\\*' -> 'D:\\新しいフォルダー (2)\\Yaiko084-1083343855116738560(20190110_214437)-1411619213513428993(20210704_183341)-media\\*'
|
20
|
+
使用前
|
21
|
+

|
27
22
|
|
28
|
-
During handling of the above exception, another exception occurred:
|
29
|
-
|
30
|
-
Traceback (most recent call last):
|
31
|
-
File "C:\Users\user\Desktop\test.py", line 36, in <module>
|
32
|
-
shutil.move(file+"\\*", "-".join(prev))
|
33
|
-
File "C:\Users\user\AppData\Local\Programs\Python\Python38\lib\shutil.py", line 802, in move
|
34
|
-
|
23
|
+
使用後
|
35
|
-
File "C:\Users\user\AppData\Local\Programs\Python\Python38\lib\shutil.py", line 432, in copy2
|
36
|
-
copyfile(src, dst, follow_symlinks=follow_symlinks)
|
37
|
-
File "C:\Users\user\AppData\Local\Programs\Python\Python38\lib\shutil.py", line 261, in copyfile
|
38
|
-
with open(src, 'rb') as fsrc, open(dst, 'wb') as fdst:
|
39
|
-
|
24
|
+

|
40
|
-
|
41
|
-
```
|
42
25
|
|
43
26
|
### 該当のソースコード
|
44
27
|
|
@@ -52,41 +35,49 @@
|
|
52
35
|
|
53
36
|
#フォルダ内のフォルダパスを取得
|
54
37
|
currentDir = os.getcwd()
|
55
|
-
f
|
38
|
+
folders = glob.glob(os.path.join(currentDir, '*'))
|
56
39
|
#print("current="+currentDir)
|
57
40
|
|
58
41
|
#前回フォルダ名を初期化する([アカウント名]-[開始日]-[終了日]-media)
|
59
42
|
prev = ['xxxx', '9999999999999999999(999999999999999)','0000000000000000000(000000000000000)','media']
|
43
|
+
current = ['xxxx', '9999999999999999999(999999999999999)','0000000000000000000(000000000000000)','media']
|
44
|
+
new = ['xxxx', '9999999999999999999(999999999999999)','0000000000000000000(000000000000000)','media']
|
60
45
|
|
61
46
|
#for文で全部のフォルダを確認
|
62
|
-
for f
|
47
|
+
for folder in folders:
|
63
48
|
#"-"でセパレートする
|
64
|
-
current = f
|
49
|
+
current = folder.split('-')
|
50
|
+
|
65
51
|
|
66
|
-
#前回アカウント名と同じかを比較する
|
52
|
+
#前回アカウント名と同じかを比較する
|
67
53
|
if bool(prev[0] == current[0]) :
|
54
|
+
# アカウントが同じなら現在のフォルダ→前のフォルダにファイルを移動する
|
55
|
+
new = prev
|
56
|
+
for p in os.listdir(folder):
|
57
|
+
shutil.move(os.path.join(folder, p), "-".join(prev))
|
58
|
+
|
68
59
|
#開始日を比較してを保持
|
69
60
|
if prev[1] > current[1]:
|
70
|
-
|
61
|
+
new[1] = current[1]
|
71
62
|
#終了日を比較して新しい方を保持
|
72
63
|
if prev[2] < current[2]:
|
73
|
-
|
64
|
+
new[2] = current[2]
|
74
65
|
|
66
|
+
if bool(new != prev):
|
67
|
+
#日付に変更がある場合はフォルダ名を変更してnew → prev情報をコピー
|
75
|
-
|
68
|
+
os.rename(folder, "-".join(new))
|
69
|
+
prev = new
|
76
70
|
|
77
|
-
#[アカウント名]-[(古い)開始日]-[(新しい)終了日]-mediaのフォルダを作ってファイルを移動する
|
78
|
-
os.makedirs("-".join(prev), exist_ok=True)
|
79
|
-
|
71
|
+
#日付に変更がない場合は何もしない
|
80
|
-
|
72
|
+
|
81
|
-
shutil.move(file+"\\*", "-".join(prev))
|
82
73
|
#現在のフォルダを削除する
|
83
|
-
os.removedirs(f
|
74
|
+
os.removedirs(folder)
|
84
|
-
#前回のフォルダ名を更新する[アカウント名]-[(古い)開始日]-[(新しい)終了日]-mediaのフォルダ
|
85
75
|
else:
|
86
76
|
#前回アカウント名と異なる場合は前回フォルダ名を更新して終わる
|
87
77
|
prev = current
|
88
78
|
|
89
79
|
#終わり
|
80
|
+
|
90
81
|
```
|
91
82
|
|
92
83
|
### 補足情報(FW/ツールのバージョンなど)
|