遍历文件夹,提取文件名,不带扩展名分配为 Python 中的 API 变量名称



让我首先说我从来没有用Python编码过。

我需要进行 API 调用才能将一堆文件从本地计算机上传到服务器。在服务器上,我想获取文件的文件名并将没有扩展名的字符串分配给名为"标识符"的变量。

import requests
import os
url = 'http://someplace'
folder = 'path/to/folder/'
for card in os.listdir(folder):
    data = {'identifier': PyFile_Name(PyObject *p), 'type': 'Inventory Card'}
    files = {'card': open(os.path.join(folder, card), 'rb')}
    requests.post(url, data=data, files=files, auth=('username', 'pass'))

我这样做对吗?

你应该使用

import requests
import os
url = 'http://someplace'
folder = 'path/to/folder/'
for card in os.listdir(folder):
    data = {'identifier': '.'.join(card.split('.')[:-1]), 'type': 'Inventory Card'}
    files = {'card': open(os.path.join(folder, card), 'rb')}
    requests.post(url, data=data, files=files, auth=('username', 'pass'))

'.'.join(card.split('.')[:-1]) 采用文件名(以 card 为单位),将其拆分为在文件名中用句点分隔的组件,拒绝列表[:-1]的最后一个元素,并重新加入文件名减去扩展名。

使用此语法将处理具有多个句点的文件名,例如foo.20120613.txt

编辑:

列出我的~/tmp目录中文件的示例...

[mpenning@Bucksnort tmp]$ ls
howto  regex_trial.xml  soln.py
[mpenning@Bucksnort tmp]$
[mpenning@Bucksnort tmp]$ python
Python 2.6.6 (r266:84292, Dec 27 2010, 00:02:40)
[GCC 4.4.5] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import os
>>> for card in os.listdir('./'):
...     print "card:", card
...     print " base_name:", '.'.join(card.split('.')[:-1])
...
card: howto
 base_name:
card: regex_trial.xml
 base_name: regex_trial
card: soln.py
 base_name: soln
>>>

请注意,howto是一个目录...您需要在脚本中放置逻辑以跳过目录(如果此路径中有)。

最新更新