2013-11-20 1 views
2

Я новичок в Python, и это первый пост. Хотите загрузить TXT-файл на сервер (на данный момент это локальный хост). Каждый раз я запускаю сценарий, локальный файл загружается и обновляется на сервере. Я использую Requests модульPython скрипт для загрузки на сервер

import requests, time 
url ='http://192.168.49.205/test/database/data.txt' # where i want to write 
files = {'file':('data.txt','C:\Python27\data.txt','rb')} 
#r = requests.post(url,files=files) # this works too 

r= requests.post('http://192.168.49.205/test/database/data.txt', 
data={'upload_type': 'standard',   'upload_to': '0'},files=files) 

print r.status_code 
print r.text 

data.txt не обновляется. Просто видя старые данные (я поставил некоторые значения при создании файла). Я не использую какие-либо формы в PHP или HTML. Можно ли загружать с помощью метода?

Поверьте, я получил некоторую ясность после публикации вопроса. Теперь на стороне сервера есть файл PHP, который слушает клиент. Вот «post.php». Таким образом, это заменит текстовый файл на стороне клиента. PHP файл получить имя, задачи, значение от клиента и отправлять сообщения в «a.txt» на сервере (локальный)

<?php  
if(isset($_GET["Name"])){ 
$name=$_GET["Name"]; 
} 

if(isset($_GET["Task"])){ 
$task=$_GET["Task"]; 
} 

if(isset($_GET["Value"])){ 
$value=$_GET["Value"]; 
} 

$f=fopen("a.txt","w") or exit("Unable to open file!"); 
fwrite($f,$name); 
fwrite($f," "); 
fwrite($f,$task); 
fwrite($f," "); 
fwrite($f,$value); 
fclose($f); 

?>` 

Так что теперь просит выглядеть так

import requests, time 
url = 'http://192.168.49.205/test/test.php' 
post_data = {'Name':'job','Task':'008','Value':'8'} 

r= requests.post('http://192.168.49.205/test/post.php', data= post_data) 


print r.status_code 
print r.text 

Stil значения не достигает "a.txt". Что мне не хватает? Пожалуйста, порекомендуйте!

+0

Ошибка может быть на стороне сервера. – Matthias

+0

Использует ли 'http: // 192.168.49.205/test/database/data.txt' '' 'запрос' POST'? Какая услуга там слушает? –

+0

data.txt - это простой текстовый файл. Не думайте, это требует POST-запроса или прослушивания. После вашего вопроса, я получаю эту идею. Таким образом, файл сервера должен быть файлом PHP, который принимает запрос POST. Пожалуйста, несите мое невежество. – Chandra

ответ

2

Вы не читаете содержимое файла в своем коде. В requests documentation состояния:

файлы - (опционально) Словарь «имя»: файл-как-объекты (или { «имя» («имя_файла», fileobj)}) для загрузки многочастного кодирования.

Ваш код предполагает, что вы хотите использовать второй вариант. Однако:

files = {'file':('data.txt','C:\Python27\data.txt','rb')} 

Вы не создания структуры, как документация показывает - вы передаете кортеж из 3-х строк вместо кортежа (строки, file_obj). Вероятно, вы хотели бы это сделать:

files = {'file':('data.txt',open('C:\Python27\data.txt','rb'))}