If you really want a single function that can take either filenames or lists of data (which you probably don't, but you seem resistant to the more pythonic alternatives that oseiskar and Abhijit suggested), you definitely don't want to do it this way.
In general, if you find yourself doing type switching, you're doing something wrong. But doing fake type switching based on a string, and relying on the user to match the string to the type, is even more wrong.
One alternative is to just try to open the filename, and, if that fails, assume it was a sequence instead of a filename instead. (It's easier to ask forgiveness than permission.) For example:
def acquire_data(filename_or_list):
try:
with open(filename_or_list) as f:
data = list(f)
except TypeError:
data = list(filename_or_list)
# ... now the rest of your code uses data
This works even if the user passes a unicode filename instead of an str, or a tuple instead of a list, or even some class you've never heard of that works with the open or list function. That's the essence of duck typing.
Of course it's a bit of an abuse of duck typing, but that's inherent in your problem: You're trying to take a parameter that's of one of two different types, and any solution that makes that work will be abusing some feature.
The only worry is that someone might pass something that works with both open and list. In fact, that's true with a plain old str. So you need a generic decision for what to do with such cases—it seems like trying it as a pathname first, then as a sequence, is better than the other way around. That's certainly what you want from str, but you have to think through whether that would be true for every possible type that works both ways.