about special characters
Jianling Fan
fanjianling at gmail.com
Sat Apr 30 15:48:05 EDT 2016
Oh, it works!
This is the simplest and best way!
Thanks very much!
On 30 April 2016 at 13:42, MRAB <python at mrabarnett.plus.com> wrote:
> On 2016-04-30 19:13, Jianling Fan wrote:
>>
>> Hello everyone,
>>
>> Thanks very much for all your replies and sorry for the inconvience.
>> This is my first time to post question in this list.
>>
>> I am using python 2.7 in Windows 7 Enterprise version.
>>
>> Here is the the filename that cause the problem: "Decock-2013-On the
>> potential of δ18O and δ15N.pdf"
>> When I delete the "δ" in the filename, the script works good.
>>
>> Here is the output:
>>
>> Python 2.7.2 (default, Jun 12 2011, 15:08:59) [MSC v.1500 32 bit
>> (Intel)] on win32
>> Type "help", "copyright", "credits" or "license" for more information.
>>>>>
>>>>> runfile('P:/sync.py', wdir='P:')
>>
>> Traceback (most recent call last):
>> File "<stdin>", line 1, in <module>
>> File
>> "C:\Python27\lib\site-packages\spyderlib\widgets\externalshell\sitecustomize.py",
>> line 699, in runfile
>> execfile(filename, namespace)
>> File
>> "C:\Python27\lib\site-packages\spyderlib\widgets\externalshell\sitecustomize.py",
>> line 74, in execfile
>> exec(compile(scripttext, filename, 'exec'), glob, loc)
>> File "P:/sync.py", line 50, in <module>
>> sync_files(src, dest)
>> File "P:/sync.py", line 43, in sync_files
>> sync(dir_cmp)
>> File "P:/sync.py", line 20, in sync
>> shutil.rmtree(f_right)
>> File "C:\Python27\lib\shutil.py", line 236, in rmtree
>> onerror(os.listdir, path, sys.exc_info())
>> File "C:\Python27\lib\shutil.py", line 234, in rmtree
>> names = os.listdir(path)
>> WindowsError: [Error 3] The system cannot find the path specified:
>> 'P:/mystuff\\Decock-2013-On the potential of d18O and d15N.pdf/*.*'
>>
>>
>> Here is my code to do this work: I am using this script to sync my
>> files between different disks.
>>
>> #coding=utf-8
>>
>> import filecmp, shutil, os, sys
>>
>> SRC = r'C:/Disk/mystuff'
>> DEST = r'P:/mystuff'
>>
>> IGNORE = ['Thumbs.db']
>>
>> def get_cmp_paths(dir_cmp, filenames):
>> return ((os.path.join(dir_cmp.left, f),
>> os.path.join(dir_cmp.right, f)) for f in filenames)
>>
>> def sync(dir_cmp):
>> for f_left, f_right in get_cmp_paths(dir_cmp, dir_cmp.right_only):
>> if os.path.isfile(f_right):
>> os.remove(f_right)
>> else:
>> shutil.rmtree(f_right)
>> print('delete %s' % f_right)
>> for f_left, f_right in get_cmp_paths(dir_cmp,
>> dir_cmp.left_only+dir_cmp.diff_files):
>> if os.path.isfile(f_left):
>> shutil.copy2(f_left, f_right)
>> else:
>> shutil.copytree(f_left, f_right)
>> print('copy %s' % f_left)
>> for sub_cmp_dir in dir_cmp.subdirs.values():
>> sync(sub_cmp_dir)
>>
>> def sync_files(src, dest, ignore=IGNORE):
>> if not os.path.exists(src):
>> print('= =b Please check the source directory was exist')
>> print('- -b Sync file failure !!!')
>> return
>> if os.path.isfile(src):
>> print('#_# We only support for sync directory but not a single
>> file,one file please do it by yourself')
>> print('- -b Sync file failure !!!')
>> return
>> if not os.path.exists(dest):
>> os.makedirs(dest)
>> dir_cmp = filecmp.dircmp(src, dest, ignore=IGNORE)
>> sync(dir_cmp)
>> print('^_^ Sync file finished!')
>>
>> if __name__ == '__main__':
>> src, dest = SRC, DEST
>> if len(sys.argv) == 3:
>> src, dest = sys.argv[1:3]
>> sync_files(src, dest)
>>
> [snip]
> You're using bytestrings (str). As soon as you step out of the ASCII
> range, you can face problems with which encoding it's using.
>
> The simplest fix is to switch to using Unicode.
>
> Start with this change:
>
> SRC = ur'C:/Disk/mystuff'
> DEST = ur'P:/mystuff'
>
> --
> https://mail.python.org/mailman/listinfo/python-list
--
Jianling Fan
樊建凌
More information about the Python-list
mailing list