如何在python中获取Windows短文件名?

探索

我需要根据我的python代码确定Windows短文件名。为此,我可以使用win32api找到解决方案。

import win32api
long_file_name='C:\Program Files\I am a file'
short_file_name=win32api.GetShortPathName(long_file_name)

参考:http : //blog.lowkster.com/2008/10/spaces-in-directory-names-i-really-love.html

不幸的是,为此,我需要安装pywin32ActivePython在我的情况下无法安装

另请参阅SO:

在python中获取短路径:在python中获取短路径

腐烂

您可以使用ctypes根据MSDN的文档GetShortPathName位于中KERNEL32.DLL需要注意的是真正的功能是GetShortPathNameW用于W¯¯ IDE(Unicode)字符和GetShortPathNameA单字节字符。由于宽字符更为通用,因此我们将使用该版本。首先,根据文档设置原型:

import ctypes
from ctypes import wintypes
_GetShortPathNameW = ctypes.windll.kernel32.GetShortPathNameW
_GetShortPathNameW.argtypes = [wintypes.LPCWSTR, wintypes.LPWSTR, wintypes.DWORD]
_GetShortPathNameW.restype = wintypes.DWORD

GetShortPathName通过在没有目标缓冲区的情况下首先调用它来使用。它将返回创建目标缓冲区所需的字符数。然后,使用该大小的缓冲区再次调用它。如果由于TOCTTOU问题,返回值仍然较大,请继续尝试直到正确为止。所以:

def get_short_path_name(long_name):
    """
    Gets the short path name of a given long path.
    http://stackoverflow.com/a/23598461/200291
    """
    output_buf_size = 0
    while True:
        output_buf = ctypes.create_unicode_buffer(output_buf_size)
        needed = _GetShortPathNameW(long_name, output_buf, output_buf_size)
        if output_buf_size >= needed:
            return output_buf.value
        else:
            output_buf_size = needed

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何使用Java在Windows中获取短文件名?

来自分类Dev

Windows短文件名中〜后面的数字如何分配?

来自分类Dev

如何在目录中使用文件名python中的最大数量获取文件名?

来自分类Dev

如何在Perl中从文件名获取文件句柄?

来自分类Dev

如何在Python中获取当前目录中的所有文件名和文件大小

来自分类Dev

Spark Streaming:如何在Python中获取已处理文件的文件名

来自分类Dev

如何在继承的文件的装饰器函数中获取python文件名

来自分类Dev

如何在Python中从具有完整路径的变量中获取文件名?

来自分类Dev

如何在Mocha Reporter中获取测试文件名

来自分类Dev

如何在Django中获取上传的文件名

来自分类Dev

如何在Bash中获取文件名的通配符部分

来自分类Dev

如何在Openerp中获取上载的文件名

来自分类Dev

如何在Kotlin中获取当前类的文件名

来自分类Dev

如何在Dart中获取文件名?

来自分类Dev

如何在Dojo中获取当前文件名

来自分类Dev

如何在Mocha Reporter中获取测试文件名

来自分类Dev

如何在awk中获取文件名

来自分类Dev

如何在PyKD中获取模块的原始文件名?

来自分类Dev

如何在循环内的变量中获取文件名?

来自分类Dev

如何在Windows中通过python正确读取日语文件名文件

来自分类Dev

如何在Python中基于文件名运行代码?

来自分类Dev

如何在python中动态生成文件名?

来自分类Dev

如何在Python中创建顺序文件名

来自分类Dev

如何在PostgreSQL中从文件名获取文件扩展名?

来自分类Dev

如何在Java中缩短文件路径(获取规范路径)?

来自分类Dev

如何在Java中缩短文件路径(获取规范路径)?

来自分类Dev

如何在C ++中的文件更改事件中获取文件名

来自分类Dev

如何在bash终端中从%f获取不带扩展名的文件名?

来自分类Dev

如何在iOS共享扩展名中获取共享库的文件名

Related 相关文章

  1. 1

    如何使用Java在Windows中获取短文件名?

  2. 2

    Windows短文件名中〜后面的数字如何分配?

  3. 3

    如何在目录中使用文件名python中的最大数量获取文件名?

  4. 4

    如何在Perl中从文件名获取文件句柄?

  5. 5

    如何在Python中获取当前目录中的所有文件名和文件大小

  6. 6

    Spark Streaming:如何在Python中获取已处理文件的文件名

  7. 7

    如何在继承的文件的装饰器函数中获取python文件名

  8. 8

    如何在Python中从具有完整路径的变量中获取文件名?

  9. 9

    如何在Mocha Reporter中获取测试文件名

  10. 10

    如何在Django中获取上传的文件名

  11. 11

    如何在Bash中获取文件名的通配符部分

  12. 12

    如何在Openerp中获取上载的文件名

  13. 13

    如何在Kotlin中获取当前类的文件名

  14. 14

    如何在Dart中获取文件名?

  15. 15

    如何在Dojo中获取当前文件名

  16. 16

    如何在Mocha Reporter中获取测试文件名

  17. 17

    如何在awk中获取文件名

  18. 18

    如何在PyKD中获取模块的原始文件名?

  19. 19

    如何在循环内的变量中获取文件名?

  20. 20

    如何在Windows中通过python正确读取日语文件名文件

  21. 21

    如何在Python中基于文件名运行代码?

  22. 22

    如何在python中动态生成文件名?

  23. 23

    如何在Python中创建顺序文件名

  24. 24

    如何在PostgreSQL中从文件名获取文件扩展名?

  25. 25

    如何在Java中缩短文件路径(获取规范路径)?

  26. 26

    如何在Java中缩短文件路径(获取规范路径)?

  27. 27

    如何在C ++中的文件更改事件中获取文件名

  28. 28

    如何在bash终端中从%f获取不带扩展名的文件名?

  29. 29

    如何在iOS共享扩展名中获取共享库的文件名

热门标签

归档