File: mergeall-products/unzipped/test/ziptools/docetc/illegal-filenames-demo-1.3/py-android11-shared-app-illegal.txt
# Demo Android 11 shared and app-specific storage. # Storages differ, and folders differ from files. # This was run in Termux on an Android-11 Z Fold3. # SHARED STORAGE >>> import os, glob >>> nonport = ' \x00 / \\ | < > ? * : " '.replace(' ', '') >>> >>> os.chdir('/sdcard') >>> for c in '_' + nonport + '^': ... try: ... name = 'temp' + c + '.txt' ... n = open(name, 'w').write('spam') ... except Exception as E: ... print(name, 'FAIL', E.__class__.__name__, E) ... else: ... print(name, 'okay') ... temp_.txt okay temp.txt FAIL ValueError embedded null byte temp/.txt okay temp\.txt FAIL PermissionError [Errno 1] Operation not permitted: 'temp\\.txt' temp|.txt FAIL PermissionError [Errno 1] Operation not permitted: 'temp|.txt' temp<.txt FAIL PermissionError [Errno 1] Operation not permitted: 'temp<.txt' temp>.txt FAIL PermissionError [Errno 1] Operation not permitted: 'temp>.txt' temp?.txt FAIL PermissionError [Errno 1] Operation not permitted: 'temp?.txt' temp*.txt FAIL PermissionError [Errno 1] Operation not permitted: 'temp*.txt' temp:.txt FAIL PermissionError [Errno 1] Operation not permitted: 'temp:.txt' temp".txt FAIL PermissionError [Errno 1] Operation not permitted: 'temp".txt' temp^.txt okay >>> >>> os.mkdir('temp|dir') >>> glob.glob('temp*') ['temp', 'temp_.txt', 'temp^.txt', 'temp|dir'] # APP-SPECIFIC STORAGE >>> os.chdir('/sdcard/Android/data/com.termux') >>> for c in '_' + nonport + '^': ... try: ... name = 'temp' + c + '.txt' ... n = open(name, 'w').write('spam') ... except Exception as E: ... print(name, 'FAIL', E.__class__.__name__, E) ... else: ... print(name, 'okay') ... temp_.txt okay temp.txt FAIL ValueError embedded null byte temp/.txt FAIL FileNotFoundError [Errno 2] No such file or directory: 'temp/.txt' temp\.txt okay temp|.txt okay temp<.txt okay temp>.txt okay temp?.txt okay temp*.txt okay temp:.txt okay temp".txt okay temp^.txt okay >>> >>> os.mkdir('temp|dir') >>> glob.glob('temp*') ['temp_.txt', 'temp\\.txt', 'temp|.txt', 'temp<.txt', 'temp>.txt', 'temp?.txt', 'temp*.txt', 'temp:.txt', 'temp".txt', 'temp^.txt', 'temp|dir']