您應該使用
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
目錄中的文件的一個例子...
[[email protected] tmp]$ ls
howto regex_trial.xml soln.py
[[email protected] tmp]$
[[email protected] 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
是目錄...如果在此路徑中有一個目錄,則需要在腳本中放置邏輯以跳過目錄。
看起來你在混合Python和Python C API;後者只在編碼C中的Python擴展時需要.. –
你覺得'PyFile_Name(PyObject * p)'會做什麼? –
@iarsmans我發現它[這裏](http://docs.python.org/c-api/file.html?highlight=file_name#PyFile_Name)...他們描述它的方式,它聽起來像它會返回文件名沒有擴展名。我不知道* p會做什麼,但可能它是一個Python變量(類似於Javascript中的(e)),你會提出一個替代方案嗎? – joshdcomp