Взять строку из файла

  • Автор темы Автор темы rennigeB
  • Дата начала Дата начала

rennigeB

Client
Регистрация
22.03.2017
Сообщения
19
Реакции
4
Баллы
3
Вроде бы самая простая вещь, но не могу найти как сделать.

Приходится изворачиваться через списки и там где могло быть одно действие (взять строки 0-4 из файла и положить в переменную) приходится делать пять:

1. Создать основной список из файла (из которого брать строки)
2. Создать дополнительный список
3. Выделить подписок чтобы взять диапазон строк из основного списка и поместить их в дополнительный
4. Объединить элементы дополнительного списка чтобы положить их в переменную
5. Очистить дополнительный список чтобы можно было его еще раз использовать в этом проекте
 
Писал от руки, так что возможна грамматическая ошибка
Код:
Развернуть Свернуть Копировать
return string.Join(Environmant.NewLine, project.Lists["mylist"].Take(4));
 
Писал от руки, так что возможна грамматическая ошибка
Код:
Развернуть Свернуть Копировать
return string.Join(Environmant.NewLine, project.Lists["mylist"].Take(4));
Не разбираюсь в коде, но я так понял здесь все-равно задействованы списки? Мне же нужно обойтись без них.

Дело даже не в том что из-за них мне приходится городить костыли, а в том что их нельзя динамически обновлять.

Разберем на примере email-спамера. Есть список серверов (например, файл smtp.txt) и несколько списков почт по которым нужно спамить (файлы cars.txt, iphone.txt и т.д. - там просто email в каждой строке).

Каждый сервер заточен под определенную аудиторию поэтому нельзя выбирать рандомно и, уж тем более, объединять все файлы с почтами в один. Нужно чтобы каждый сервер работал только по своей аудитории, поэтому я решил добавить в файл smtp.txt еще один параметр который бы и указывал каждому серверу на файл с подходящими для него почтами.

Таким образом файл smtp.txt выглядит вот так:

Код:
Развернуть Свернуть Копировать
IP        Login    Password    ContactsFile    Status
103.83.247.233    root    8F6f90^0    china.txt    sent
111.7.174.189    root    977f%R69    china.txt    sending
63.243.252.244    root    Uo97266%    iphone.txt    sending
164.132.161.3    root    U6i9356#    iphone.txt    ready
63.243.252.114    root    0L02f4#2    cars.txt    ready

Но указывая в настройках списка пусть до файла {-Project.Directory-}\{-Variable.ContactsFile-} мы на самом старте проекта получим пустой список потому что переменная {-Variable.ContactsFile-} еще не взята с файла smtp.txt. Поэтому, по мимо тех костылей что я описал в первом посте, мне приходится еще и обновлять список довольно тупым образом - брать содержимое файла, помещать в переменную и затем уже через Добавить текст заполнять этот злосчастный список.

Может быть конечно у меня изначально не правильная логика построения проекта, но в любом случае мне не понятно почему такую простую функцию вырезали, ведь раньше же вроде было https://help.zennolab.com/ru/v3/zennoposter/index.html?data_prepearing_and_set.htm
 
Вот для сравнения - слева как сейчас, а справа как хотелось бы)

zenno-jpg.19420
 

Вложения

  • zenno.jpg
    zenno.jpg
    62,9 KB · Просмотры: 1 585
C#:
Развернуть Свернуть Копировать
string path = @"C:\file.txt"; // путь к файлу
string numberOfLine = "0-4"; // номера строк (можно указать диапазон или перечислить через запятую и т.д. = http://zennolab.com/wiki/ru:ranges)
string[] tmp = FileSystem.FileGetLines(path, numberOfLine, false, false);
return string.Join("\r\n", tmp);
 
C#:
Развернуть Свернуть Копировать
string path = @"C:\file.txt"; // путь к файлу
string numberOfLine = "0-4"; // номера строк (можно указать диапазон или перечислить через запятую и т.д. = http://zennolab.com/wiki/ru:ranges)
string[] tmp = FileSystem.FileGetLines(path, numberOfLine, false, false);
return string.Join("\r\n", tmp);

Вот спасибо! Прям то что надо)
 
Наверно удаление добавить надо. bool removeLine
 
Наверно удаление добавить надо. bool removeLine
Да я просто без переменной на true изменил. Ща осталось только сообразить как туда путь {-Project.Directory-}\{-Variable.ContactsFile-} впихнуть)
 
Наверно удаление добавить надо. bool removeLine
Просто подумал, что ТСу не нужно было брать с удалением или чтоб можно проще делать выбор, поэтому по-умолчанию false указал.
Ща осталось только сообразить как туда путь {-Project.Directory-}\{-Variable.ContactsFile-} впихнуть)
C#:
Развернуть Свернуть Копировать
string path = project.Directory + @"\" + project.Variables["ContactsFile"].Value;
 
  • Спасибо
Реакции: ks1989 и rennigeB
project.Directory+project.Variables["ContactsFile"].Value

Опередил :)
 
  • Спасибо
Реакции: ks1989 и rennigeB
C#:
Развернуть Свернуть Копировать
string path = @"C:\file.txt"; // путь к файлу
string numberOfLine = "0-4"; // номера строк (можно указать диапазон или перечислить через запятую и т.д. = http://zennolab.com/wiki/ru:ranges)
string[] tmp = FileSystem.FileGetLines(path, numberOfLine, false, false);
return string.Join("\r\n", tmp);
Подскажите, а если диапазон нужно указать из переменной, то в каком формате её указывать?
Разобрался, в таком случае нужно использовать такой код:
C#:
Развернуть Свернуть Копировать
string path = @"C:\file.txt"; // путь к файлу
string numberOfLine = "0-"+project.Variables["n"].Value;; // номера строк (можно указать диапазон или перечислить через запятую и т.д. = http://zennolab.com/wiki/ru:ranges)
string[] tmp = FileSystem.FileGetLines(path, numberOfLine, false, false);
return string.Join("\r\n", tmp);
 
Последнее редактирование:

Кто просматривает тему: (Всего: 0, Пользователи: 0, Гости: 0)